我正在尝试配置log4j 2.0来报告日志.
我的配置保存为log4j2.xml,这是它的内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration name="PRODUCTION" status="OFF">
<appenders>
<RollingFile name="MyFileAppender"
fileName="../Logs/app.log"
filePattern="../Logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingFile>
</appenders>
<loggers>
<root level="trace">
<appender-ref ref="MyFileAppender"/>
</root>
</loggers>
</configuration>
Run Code Online (Sandbox Code Playgroud)
它存在于项目的类路径中,我尝试将其放在许多其他目录中.
我在代码中创建了一个记录器,如下所示:
Logger logger = LogManager.getLogger(MyClass.class.getName());
logger.info("test");
Run Code Online (Sandbox Code Playgroud)
没有写任何内容,也没有创建文件.当我调试代码时,我看到记录器是默认的记录器(控制台).
Man*_* SK 11
实际上这是一个直接的过程.Log4j 2的两个主要类如下所示,您需要像这样导入:
import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.Logger
Run Code Online (Sandbox Code Playgroud)
现在Logger使用此代码获取实例.
private static final Logger logger = LogManager.getLogger();
Run Code Online (Sandbox Code Playgroud)
注意我没有将getLogger()方法的类名指定为参数.Log4j 2自动识别出来.
现在您可以使用该类中的任何info(), trace(), debug(), warn(), error(), fatal()方法Logger.但要获得所有这些方法的输出,您需要一个XML配置文件.默认情况下,Log4j 2仅生成error() and fatal()方法的输出.
配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<File name="MyCustomLogFile" fileName="/home/me/mylogfile.log">
<PatternLayout>
<Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</Pattern>
</PatternLayout>
</File>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="all">
<AppenderRef ref="MyCustomLogFile"/>
<!--<AppenderRef ref="Console"/>-->
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
在任何地方保存此文件的任何名称.我使用Log4j2.xml作为名称.现在,您需要将此文件放在类路径中,您可以通过在运行程序时传递系统属性来执行此操作,如下所示:
java -Dlog4j.configurationFile=/path/to/xml/configuration/file/Log4j2.xml MyMainClass
Run Code Online (Sandbox Code Playgroud)
而你已经做到了.记录将立即在您的控制台上.
特别说明:
在XML文件中,我提供了2个appender:一个文件和一个控制台.您可以看到,您只需要取消注释已注释的AppenderRef标记,以便在文件而不是控制台中输出.
您还可以提供环境变量作为系统属性.Log4j 2将首先从环境变量读取配置文件,然后在-D参数中读取环境变量.
享受日志记录.:-)
Lee*_*Lee -2
好的,我解决了问题。我必须在 xml 中指定 package="myPackage"
| 归档时间: |
|
| 查看次数: |
32598 次 |
| 最近记录: |