Tag: log4j2

slf4j&log4j2 maven设置查询

我在我的项目中使用log4j2和slf4j并使用maven进行构建。 我正在使用以下pom文件(仅显示相关的依赖项)但我收到下面复制的错误与此pom文件 – 任何想法我需要添加/删除以使其工作。 我已经访问了错误中的url以及log4j2依赖项页面,因此请不要只指向响应中的URL。 信息: SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”. SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. pom文件 UTF-8 1.7.7 org.slf4j slf4j-api ${slf4j.version} com.lmax disruptor 3.2.0 org.apache.logging.log4j log4j-api 2.0.1 org.apache.logging.log4j log4j-core 2.0.1 更新:我在我的pom文件中添加了以下依赖项,我在mavenrepository中看到了jar – 虽然我在运行mvn clean / install时仍然看到相同的消息 org.apache.logging.log4j log4j-slf4j-impl 2.0.1

log4j2 – Syslog appender和PatternLayout

我需要将事件记录到syslog中。 我使用lo4j2和syslog appender。 我在log4j2.xml appenders块看起来像这样: 正如您所看到的,我有一个Console appender和RollingFile appender以及一个特定的PatternLayout。 我想为Syslog appender使用相同的PatternLayout。 但是,syslog中的日志消息似乎总是使用预定义的布局。 我试着做以下事情: 但这没有任何影响。 系统日志消息仍然具有相同的预定义格式。 如何确定进入syslog的日志消息的格式?

如何纯粹以编程方式配置log4j 2.x?

如何使用console appender编程方式配置log4j 2.3 (没有任何格式的配置文件)? 基本上我在寻找这个1.x代码的 2.x版本。 在我的课程中,我会使用 private static final Logger logger = LogManager.getLogger(); // // some method logger.debug(someString); 没有任何配置,我(正如预期)面对 ERROR StatusLogger未找到log4j2配置文件。 使用默认配置:仅将错误记录到控制台。 虽然配置文件的使用似乎得到了适当的记录 ,但我找不到一个只有裸机代码的好例子。 我得到的最接近的是这篇文章仍然使用虚拟文件。 这是我最好的(虽然完全不成功)拍摄: private static void configureLog4J() { PatternLayout layout = PatternLayout.createDefaultLayout(); ConsoleAppender appender = ConsoleAppender.createDefaultAppenderForLayout(layout); LoggerConfig loggerConfig = new LoggerConfig(); loggerConfig.addAppender(appender, DEBUG, null); } 我错过了什么吗? 如果它仍然是RTFM案例,请指出我正确的方向。

混合log4j 1.x和log4j 2

我有一个使用log4j2编写的新应用程序,以利用它的一些新function。 它使用的其中一个库有点旧,用log4j 1.x构建。 我遇到的问题是应用程序中的新代码写入日志,但旧库中的代码不会写入日志。 我甚至有一个类是旧库中的某个子类,并且也被旧库中的代码调用,并且此代码也不会写入日志。 我已将应用程序配置为使用log4j2版本2.0.2,并在将旧库引用为maven依赖项时明确排除了log4j。 如何让旧库中的代码登录到与我的新代码相同的文件中? 重写旧库应该被认为是最后的选择

如何以编程方式在运行时添加Log4J2 appender?

是否可以使用XML配置中的规范以编程方式添加Log4J2 appender? 我计划在log4j2.xml中定义它,然后像这样选择appender(不会编译): if (arg[0].equals(“log”) ) { Logger.getLogger(“loggerNameFromXMLConfig”).addAppender(“appenderNameFromXMLConfig”); } else { //… }

如何正确设置Spring Boot和log4j2?

如何通过log4j2以及我拥有的其他依赖项(Hibernate,Netty,Mina等)正确地进行Spring日志记录? 我尝试了很多不同的细节和依赖组合。 但我要么可以让Spring登录而不是其他任何东西,或者除了Spring之外的其他东西。 所有dependecies正确记录(但Spring)我收到以下错误: java.lang.NoSuchMethodError: org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(Lorg/apache/logging/log4j/core/config/ConfigurationSource;)Lorg/apache/logging/log4j/core/config/Configuration; at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.loadConfiguration(Log4J2LoggingSystem.java:167) at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.loadDefaults(Log4J2LoggingSystem.java:150) at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:75) at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:50) at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.initialize(Log4J2LoggingSystem.java:140) at org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:277) at org.springframework.boot.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:255) at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:224) at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:200) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:121) at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:111) at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:65) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:329) at org.springframework.boot.SpringApplication.run(SpringApplication.java:306) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1185) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1174) at com.myproject.MyProject.main(MyProject.java:XX) 这是我的build.gradle依赖项 dependencies { // FIX engine compile ‘org.quickfixj:quickfixj-all:1.6.2’ compile […]

Log4j2 – 配置RolloverStrategy以删除旧的日志文件

我正在尝试配置log4j以仅保留指定数量的备份文件或保留不超过某个年龄的文件。 最终,我希望有时间[每日]触发策略,并保留30个备份文件或删除30天以前的文件。 在做了一些研究之后,我了解到在使用时间策略时我无法指定备份文件的最大数量但是我遇到了这个问题https://issues.apache.org/jira/browse/LOG4J2-435和这个文档片段http: //logging.apache.org/log4j/2.x/manual/appenders.html#CustomDeleteOnRollover ,描述如何根据文件的年龄和名称模式删除文件。 现在我尝试在每分钟创建新备份文件的简单示例中应用此配置,并将自动删除3分钟以前的文件。 为此,我使用以下pom创建了简单的maven项目: 4.0.0 test test 1.0-SNAPSHOT org.apache.logging.log4j log4j-api 2.5 org.apache.logging.log4j log4j-core 2.5 org.apache.maven.plugins maven-dependency-plugin copy-dependencies prepare-package copy-dependencies ${project.build.directory}/lib false false true org.apache.maven.plugins maven-jar-plugin true lib/ test.Main log4j2.xml配置文件: %d %p %c{1.} [%t] %m%n <!—-> 和主要课程: package test; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** * Created by mzurawski on 2015-12-22. */ public class […]

创建记录器时Log4j 2挂起

我有这个简单的程序: package myPackage; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; public class Test { private static Logger logger; public static void main(String[] args) throws Exception { System.out.println(“Creating logger…”); logger = LogManager.getLogger(Test.class); System.out.println(“Logger created.”); logger.info(“Hello world!”); } } 如果我在调试器下运行程序,它会打印: Creating logger… 然后挂起 如果我在没有调试器的情况下运行程序,它会打印: Exception in thread “main” java.lang.StackOverflowError at sun.reflect.Reflection.quickCheckMemberAccess(Reflection.java:84) at java.lang.reflect.Method.invoke(Method.java:489) at org.apache.logging.log4j.util.ReflectionUtil.getCallerClass(ReflectionUtil.java:128) at org.apache.logging.log4j.util.ReflectionUtil.getCallerClass(ReflectionUtil.java:205) at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:42) at […]

如何在log4j2中创建自定义RewritePolicy?

我正在尝试在Log4j2中编写自己的RewritePolicy。 文件说明: RewritePolicy是一个接口,允许实现在将LogEvent传递给Appender之前检查并可能修改它们。 RewritePolicy声明了一个必须实现的名为rewrite的方法。 该方法传递给LogEvent,可以返回相同的事件或创建一个新事件。 这是我的java类 : public final class MarkerInjectorRewritePolicy implements RewritePolicy { @Override public LogEvent rewrite(final LogEvent event) { final Marker marker = event.getMarker(); if (marker == null) return event; // If there’s a Marker, add it to the ThreadContextMap so the RoutingAppender can properly routes log messages event.getContextMap().put(“_marker”, marker.getName()); return event; } […]

Log4J2 appender没有登录到ThreadContext文件夹

我有以下Log4J2配置XML: [%date{ISO8601}][%-5level][%logger{1.}][%marker][$${ctx:employeeId}] %X%m%n 但是,只要log4j2 appender写入文件,它在写入指定的文件路径时就不会使用正确的${ctx:employeeId}字符串。 log4j2 appender第一次写入文件时,会写入${ctx:employeeId}指定的正确文件路径。 但是,每当有关具有另一个Id的员工的信息被放入线程上下文时,appender仍然会记录到旧文件路径。 例如,appender第一次记录它写入正确的路径: D:/example/logs/sites/1/2015-08-22/2/emp.log 但是当记录器记录下一个雇员Id(使用新的ThreadContext)时,它仍然登录 D:/example/logs/sites/1/2015-08-22/2/emp.log 而不是例如: D:/example/logs/sites/1/2015-08-22/3/emp.log (注意员工ID不同。) 在日志输出模式中,我记录当前employeeId [$${ctx:employeeId}] ,以及当前线程上下文%X 。 输出显示正在使用正确的employeeId并且在ThreadContext中,但是appender没有记录到${ctx:employeeId}文件路径。 有谁知道我错过了什么吗? 或者如果我做错了什么? 或者这可能是Log4j2的错误? 谢谢你的帮助!