Tag: log4j2

Log4j2无法使用Sprint Boot找到日志记录实现

我试图在弹簧启动时使用log4j2时遇到此错误。 ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console… 我已经遵循了这个指南: http : //docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#howto-configure-log4j-for-logging – 并且还添加了来自https://logging.apache.org/log4j/2.x/maven-artifacts.html的两个log4j2依赖项 我的依赖:树看起来像这样: [INFO] — maven-dependency-plugin:2.10:tree (default-cli) @ musikkjulekalender — [INFO] no.saiboten:musikkjulekalender:war:1.0-SNAPSHOT [INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.4.0.RELEASE:compile [INFO] | +- org.hibernate:hibernate-validator:jar:5.2.4.Final:compile [INFO] | | +- javax.validation:validation-api:jar:1.1.0.Final:compile [INFO] | | +- […]

无法使用log4j DailyRollingFileAppender将日期附加到文件名

您好我试图使用log4j DailyRollingFileAppender将当前日期附加到文件名,但它无法正常工作。 我使用了如下配置。 请为此建议一个解决方案 性能 log4j.rootLogger = DEBUG, rollingAppender log4j.appender.rollingAppender=org.apache.log4j.DailyRollingFileAppender log4j.appender.rollingAppender.DatePattern=’.’yyyy-MM-dd log4j.appender.rollingAppender.File=F:/temp/app.log log4j.appender.rollingAppender.layout=org.apache.log4j.PatternLayout log4j.appender.rollingAppender.layout.ConversionPattern=[%p] %d %c %M – %m%n 我期待日志文件为app2014-11-07.log,但它仍然是app.log

如何解决此Log4J导入错误(与Classpath相关)?

当我运行以下简单的log4J示例时,我收到一个错误: import org.apache.logging.log4j.core.*; import java.io.*; import java.sql.SQLException; import java.util.*; public class log4jExample{ /* Get actual class name to be printed on */ static Logger log = Logger.getLogger( log4jExample.class.getName()); public static void main(String[] args) throws IOException,SQLException{ log.debug(“Hello this is an debug message”); log.info(“Hello this is an info message”); } } 并且错误如下: Error: package org.apache.logging.log4j.core does not […]

如何在运行时更改特定用户/线程的日志级别

我正在使用slf4j与log4j 2.0或logback作为实现。 例如,我的s​​ervlet有一个级别为ERROR的记录器,我的服务器产生了servlet的100个线程。 我将在运行时获得一个特殊用户列表。 当我检测到一些连接的特殊用户时。我想将这些特殊用户/线程的日志级别更改为DEBUG,并使其他线程的日志级别不受影响(仍然是ERROR)。 我知道logback中的TurboFilter和log4j 2.0中的DynamicThresholdFilter,但由于我只会在运行时获取特殊用户列表,所以我无法使用它们。 这是我的申请: package com.example.logging; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServlet; import org.slf4j.*; public class App extends HttpServlet { private final Logger Logger = LoggerFactory.getLogger(App.class); Map map = new HashMap(); public App() { map.put(“user1”, “DEBUG”); map.put(“user2”, “DEBUG”); map.put(“user3”, “ERROR”); } public void writeToLogFile(String userName) { if (map.containsKey(userName)) { // do […]

什么是get4urrentLoggers在log4j2中的模拟

如何获得log4j2中使用的所有记录器? 在log4j中我可以使用如下所述的getCurrentLoggers: 使用的记录器数量

使用log4j2,如何记录键值对

我需要创建具有键值对的日志,如下所示。 在PatternLayout中是否支持使用log4j2.xml为log_level,class_name,event_id等线程中的静态字段执行此操作。 样本日志: 2014-06-18 11:57:46,719 log_level =“INFO”class_name =“com.abc.dgl.App:main(158)”name =”应用程序启动事件“event_id =”b88f7ea0-4cb1-438f-a728-ac7c2bdac578 “app =”Test App“severity =”info“action =”loading sfor文件处理“desc =”道具被读取并加载“result =”success“reason =”abc“transaction_id =”b88f7ea0-4cb1-438f-a728- ac7c2bdac578″

如何使用slf4j / log4j2发送电子邮件通知?

我已经研究了其他类似的问题并且已经做了一些谷歌搜索来找到我的答案,但我的问题仍然没有答案。 我仍然不熟悉其中的一些是如何工作的,所以请耐心等待。 我们的maven pom.xml使用了slf4j依赖: 我们的log4j2.xml文件如下所示: 我只将其添加到上面的log4j2.xml文件 并在文件中向下添加 但由于某种原因,当我调用log.error(“错误消息”)时,我的电子邮件不会发送给我。 我知道smtp主机可以工作,因为它在.NET服务中使用。 smtp服务器不需要任何凭据即可使用它。 我知道我的log.error调用是在正确的目录和文件路径中。 我已经尝试设置端口,但这没有任何区别。 我如何让电子邮件通知工作? 我甚至尝试过mailAppender,但这也不起作用:

Tomcat内存泄漏问题的log4j2线程

我正在使用log4j2进行日志记录,tomcat8和java8版本。 我使用属性“monitorInterval”来定期检查我的log4j2.xml。 在关机期间我的tomcat我面临内存泄漏问题。如何解决这个内存泄漏问题? 以下是catalina日志: 2016年10月6日15:13:55.927警告[localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[mywebapp]似乎已经启动了一个名为[Log4j2-Log4j2Scheduled-1]的线程但是未能阻止它。 这很可能造成内存泄漏。 堆栈跟踪线程:sun.misc.Unsafe.park(本机方法)java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.awaitNanos(AbstractQueuedSynchronizer。 java:2078)java.util.concurrent.ScheduledThreadPoolExecutor $ DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)java.util.concurrent.ScheduledThreadPoolExecutor $ DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)java.util.concurrent.ThreadPoolExecutor.getTask( ThreadPoolExecutor.java:1067)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)java.lang.Thread.run(Thread。 Java的:745) 提前致谢。 更新:我分析了我的日志,实际记录器上下文在Log4jServletContextListener正在销毁时再次启动.. 2016-10-22 13:49:36,347 localhost-startStop-2 DEBUG Log4jServletContextListener确保Log4j正常关闭。 2016-10-22 13:49:36,382 localhost-startStop-2 DEBUG启动LoggerContext [name = bb4719,org.apache.logging.log4j.core.LoggerContext@d77214] … 实际上在我的应用程序中我在web.xml中使用spring ContextLoaderListner,因此它可能在销毁spring listner时在内部使用日志记录。 谢谢

Log4j 2 JSON配置

我有一个XML配置,我想转换为JSON。 Log4j没有加载JSON版本,我找不到任何拼写错误。 我的测试代码只记录ERROR级别和DEBUG级别消息。 只显示ERROR消息并且没有生成文件输出 – 我假设框架回退到默认初始化而不是JSON文件。 注意:log4j2-test.json文件位于类路径中。 我在这里使用的是apache-log4j-2.0-beta9二进制文件。 XML配置如下: ${sys:user.home}/logs test.log %d %p %logger{36} [%t] %m%n 和JSON配置是: { “configuration”: { “name”: “Default”, “properties”: { “property”: { “name”:”Directory”, “value”:”${sys:user.home}/logs” }, “property”: { “name”:”FileName”, “value”:”test.log” } }, “appenders”: { “Console”: { “name”:”Console”, “target”:”SYSTEM_OUT”, “PatternLayout”: { “pattern”:”%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} – %msg%n” } }, “RollingFile”: { “name”:”File”, “fileName”:”${Directory}/${FileName}”, […]

log4j2如何将文件中的属性变量读入log4j2

背景:像往常一样,我们有各种生命周期,如dev。 stage,lt,prod所有这些都是在部署时从环境变量$ {lifecycle}中挑选出来的。 所以JNDI设置我们将$ {lifecycle} .properties存储为变量datasource.jndi.name = jdbc / xxx。 由于其他bean也在使用此属性文件,因此validation此类变量已加载且文件位于类路径中,但不知何故,我无法在下面的JDBC Appender中的log4j2.xml中使用此变量。 我也试过像“$ {datasource.jndi.name}”这样的选项,或者我有什么方法可以适应这个解决方案 get datasource.jndi.name from {lifecycle}.properties