我有一个正常的INFO级别日志用于应用程序.我需要的是另外记录所有ERROR级事件以分离错误日志.我正在使用这样的配置:
<logger name="com.acme">
<level value="error"/>
<appender-ref ref="error"/>
</logger>
<logger name="com.acme">
<level value="info"/>
</logger>
<root>
<level value="warn"/>
<appender-ref ref="general"/>
</root>
Run Code Online (Sandbox Code Playgroud)
此配置仅记录错误.如果我首先放置信息级别记录器,那么它将仅记录到常规appender,但错误记录器将不起作用.我想让他们都工作.
我希望能够拥有不同优先级的不同appender
前
<category name="my.package" additivity="false">
<priority value="fatal" />
<appender-ref ref="consoleAppender" />
<appender-ref ref="fileAppender" />
</category>
Run Code Online (Sandbox Code Playgroud)
我认为这样的东西会奏效,但事实并非如此
<category name="my.package" additivity="false">
<priority value="fatal" ref="consoleAppender" />
<priority value="info" ref="fileAppender"/>
<appender-ref ref="consoleAppender" />
<appender-ref ref="fileAppender" />
</category>
Run Code Online (Sandbox Code Playgroud) 我是log4j的新手,并努力设置eclipse及其运行.我理解了关卡中的优先级链,这是我的属性文件配置:
log4j.rootLogger=ALL, file, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
logrj.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %c{1} - %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/justfortesting.log
log4j.appender.file.Append=true
log4j.appender.file.ImmediateFlush=true
log4j.appender.file.MaxFileSize=1KB
log4j.appender.file.MaxBackupIndex=2
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %d{Z} [%t] %-5p (%F:%L) - %m%n
Run Code Online (Sandbox Code Playgroud)
我的问题是
是否可以在具有属性文件配置的日志文件中仅打印INFO和ERROR类型的消息
我将Log4j2添加到项目中,并添加了config。
# Root logger option
log4j.rootLogger=INFO, file, stdout
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Run Code Online (Sandbox Code Playgroud)
然后,我记录如下代码:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
...
final static Logger logger = LogManager.getLogger(AbstractEditor.class);
...
logger.info("updated: " + entity);
logger.debug("==> debug");
logger.info("==> info");
logger.warn("==> warn");
logger.error("==> error");
logger.fatal("==> fatal");
logger.trace("==> trace");
Run Code Online (Sandbox Code Playgroud)
据我了解,所有级别高于DEBUG的日志都必须写入控制台和文件。但只有这个被打印到控制台:
15:08:52.285 [http-nio-8080-exec-1] ERROR ru.example.AbstractEditor - ==> error
15:08:52.292 …
Run Code Online (Sandbox Code Playgroud)