Java 仅将信息日志写入控制台,将错误日志写入文件

Java 仅将信息日志写入控制台,将错误日志写入文件,java,log4j,Java,Log4j,我需要将信息(不是错误和较低级别的信息)日志写入控制台,将错误日志写入文件。需要为此使用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 i

我需要将信息(不是错误和较低级别的信息)日志写入控制台,将错误日志写入文件。需要为此使用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
这样,如果打印到
控制台的任何内容至少不是
INFO
级别,那么它将被忽略。如果将日志记录级别设置为
INFO
,则只记录
INFO
消息


ApacheLog4j站点上有一个关于这一点的说明。

您需要在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
这样,如果打印到
控制台的任何内容至少不是
INFO
级别,那么它将被忽略。如果将日志记录级别设置为
INFO
,则只记录
INFO
消息

ApacheLog4j站点上有一个关于这个的链接。

试试这个

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
试试这个

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配置文件将只将“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>

接下来的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>


您仍然需要在
标准输出
附录上设置
阈值
,以避免收到低于信息的消息。您仍然需要在
标准输出
附录上设置
阈值
,以避免收到低于信息的消息。