簡體   English   中英

只將 INFO 日志寫入控制台,將 ERROR 日志寫入文件

[英]Writing Only INFO logs to console and ERROR logs to file

我需要將 INFO(不是錯誤和較低級別的 INFO)日志寫入控制台並將 ERROR 日志寫入文件。 為此需要使用 log4j。

您需要在 appender 上為控制台輸出設置閾值。 這是從 log4j 發行版修改的示例:

# A1 is set to be a FileAppender sending its output to
# System.out. However, only info messages and above will be printed
# in A1 because A1's threshold is set to Level.INFO.

# The fact that the root level is set to Prority.DEBUG only influences
# log requests made to the root logger. It has no influence on the
# *appenders* attached to root.

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Threshold=INFO

這樣,打印到ConsoleAppender A1任何內容都將被忽略,如果它至少不是INFO級別。 如果您將日志記錄級別設置為INFO則只會記錄INFO消息。

在 apache log4j 站點上有一個關於此的常見問題解答

嘗試這個。

log.file.path=C:/log
datestamp=yyyy-MM-dd HH:mm:ss.SSS

# Define the root logger with appender file
log4j.rootLogger=INFO, stdout
log4j.logger.biz.netweb=error, LOG_FILE

#, 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=%5p,[%d{${datestamp}}],[Thread:%t],[%C.%M(%L)]==>:  %m%n

# LOG_FILE
log4j.appender.LOG_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.LOG_FILE.File=${log.file.path}/system-log/system-log.txt
log4j.appender.LOG_FILE.ImmediateFlush=true
log4j.appender.LOG_FILE.MaxFileSize=5MB
log4j.appender.LOG_FILE.MaxBackupIndex=50
log4j.appender.LOG_FILE.Append=true
log4j.appender.LOG_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOG_FILE.layout.conversionPattern=%5p,[%d{${datestamp}}],[%t,%C.%M(%L)]==>,  %m%n
log4j.rootLogger = debug,stdout,D,E

打印到控制台

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{ABSOLUTE} %5p %c{ 1 }:%L - %m%n

打印到文件

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log ## log file name
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR ## ERROR log info!!!
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

以下 log4j 配置文件將僅將“INFO”級別的日志記錄到控制台,並將“INFO”和“FATAL”之間的日志記錄到 log.log 文件中。 如果您想更改日志級別,您可以在控制台和滾動文件附加程序上更改 LevelRangeFilter 部分的 MinLevel/MaxLevel 參數。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<!--Redirect log messages to console-->
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out"/>       
    <param name="Threshold" value="INFO"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMin" value="INFO"/>
        <param name="LevelMax" value="INFO"/>
    </filter>
</appender>

<!--Redirect log messages to a log file, support file rolling.-->
<appender name="file" class="org.apache.log4j.RollingFileAppender"> 
    <param name="Threshold" value="INFO"/>
    <param name="File" value="log.log"/>
    <param name="maxFileSize" value="2Mb"/>
    <param name="maxBackupIndex" value="10"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L -- %m%n"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMin" value="INFO"/>
        <param name="LevelMax" value="FATAL"/>
    </filter>
</appender>

<root>
    <level value="INFO"></level>
    <appender-ref ref="stdout"/>
    <appender-ref ref="file"/>
</root>
</log4j:configuration>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM