@格雷格特
如您所知,log4j有三个主要的结构:appender、priority(logger)和pattern layout。默认情况下,当我们实例化log4j时设置根日志,例如
Logger log = Logger.getInstance(Somclass.class)
->它添加rootlogger的额外性(意味着rootlogger中设置的优先级和级别默认由该子记录器继承)。现在,您可以选择在lo4j配置中定义自己的优先级和级别(在xml或属性文件中)。
log4j.threshold = INFO
#Specify the appender and the priority
log4j.rootLogger = DEBUG, Appender1, Appender2
log4j.appender.Appender1 = org.apache.log4j.ConsoleAppender
log4j.appender.Appender2 = org.apache.log4j.RollingFileAppender
log4j.appender.Appender2.File = app/log1.log
log4j.appender.Appender1.layout = org.apache.log4j.PatternLayout
log4j.appender.Appender2.layout = org.apache.log4j.PatternLayout
# Print the date in ISO 8601 format
log4j.appender.Appender1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.Appender2.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
注意:在这里,如果您将阈值设置为INFO,并且即使优先级设置为DEBUG level,它也只输出符合“log”实例中INFO level的语句。
注意我们也可以为不同的模块设置不同的日志
log4j.rootLogger=DEBUG
# AdminFileAppender - used to log messages in the admin.log file.
log4j.appender.AdminFileAppender=org.apache.log4j.FileAppender
log4j.appender.AdminFileAppender.File=app/admin.log
log4j.appender.AdminFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.AdminFileAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
# ReportFileAppender - used to log messages in the report.log file.
log4j.appender.ReportFileAppender=org.apache.log4j.FileAppender
log4j.appender.ReportFileAppender.File=app/report.log
log4j.appender.ReportFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ReportFileAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
**log4j.logger.com.vaannila.admin=,AdminFileAppender
log4j.logger.com.vaannila.report=,ReportFileAppender**
管理日志
“文件和报告模块已写入”
报告.log
希望这有帮助
编辑:我担心基于时间/大小的触发策略工作得很好,而且只适用于xml配置,而不是属性文件配置。请检查一下。而且也不必包含apache-log4j-extras依赖项。1.2.17随附。下面是我使用的基于XML的配置
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<RollingFile name="info" filepattern="apps/logs/${hostName}-info-%i.log"
filename="apps/logs/${hostName}-info.log">
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %X{userName} [%C] %F:%L - %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
<DefaultRolloverStrategy max="1" min="1" />
</RollingFile>
<RollingFile name="debug" filepattern="apps/logs/${hostName}-debug-%i.log"
filename="apps/logs/${hostName}-debug.log">
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %X{userName} [%C] %F:%L - %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
<DefaultRolloverStrategy max="1" min="1" />
</RollingFile>
<Routing name="RoutingAppender">
<Routes pattern="${ctx:logFileName}">
<Route>
<RollingFile name="${ctx:logFileName}-logfile"
fileName="apps/logs/${hostName}-${ctx:logFileName}.log"
filePattern="apps/logs/${hostName}-${ctx:logFileName}-%i.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS}[%X{logTrackingId}] [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
<DefaultRolloverStrategy max="1" min="1" />
</RollingFile>
</Route>
</Routes>
</Routing>
<RollingFile name="RollingFileMonitor" filepattern="apps/logs/${hostName}-monitor-%i.log"
filename="apps/logs/${hostName}-monitor.log">
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %X{userName} [%C] %F:%L - %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
</RollingFile>
<RollingFile name="RollingFileAPM" filename="apps/logs/${hostName}-apm.log"
filepattern="apps/logs/${hostName}-apm-%i.log">
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %X{userName} [%C] %F:%L - %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
<DefaultRolloverStrategy min="1" max="1" />
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console" />
</Root>
<Logger name="com.XXXX.app.service" additivity="false">
<AppenderRef ref="RollingFileMonitor" />
</Logger>
<Logger name="com.XXXX.apm" additivity="false">
<AppenderRef ref="RollingFileAPM" />
</Logger>
<Logger name="com.XXXX,config" level="info" additivity="false">
<AppenderRef ref="info" />
</Logger>
<Logger name="com.XXXXXX.controller" level="info" additivity="false">
<AppenderRef ref="RoutingAppender" />
</Logger>
<Logger name="com.XXXXX.impl" level="info" additivity="false">
<AppenderRef ref="RoutingAppender" />
</Logger>
<Logger name="com.XXXXX.impl" level="info" additivity="false">
<AppenderRef ref="RoutingAppender" />
</Logger>
<Logger name="com.XXXX.logging" level="info" additivity="false">
<AppenderRef ref="RoutingAppender" />
</Logger>
<Logger name="com.zaxxer.hikari" level="debug" additivity="false">
<AppenderRef ref="debug" />
</Logger>
</Loggers>
希望这能回答你的问题。