<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<!-- status 应记录到控制台的内部Log4j事件的级别。 此属性的有效值为“trace”,“debug”,“info”,“warn”,“error”和“fatal”。 Log4j会将有关初始化,翻转和其他内部操作的详细信息记录到状态记录器。
monitorInterval自动检测配置文件更新,单位秒,最小值为5 -->
<Properties>
<Property name="name1">value</property>
<Property name="name2" value="value2"/>
</Properties>
<filter ... />
<Appenders>
<appender ... >
<filter ... />
</appender>
<!-- 以下为简洁格式Appender配置 -->
<Console name="Console" target="SYSTEM_OUT">
<!-- target 的值 "SYSTEM_OUT" or "SYSTEM_ERR". 默认是 "SYSTEM_OUT".-->
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<!-- 以下为严格格式的Appender配置 -->
<Appender type="Console" name="STDOUT">
<Layout type="PatternLayout" pattern="%m MDC%X%n"/>
<Filters>
<Filter type="MarkerFilter" marker="FLOW" onMatch="DENY" onMismatch="NEUTRAL"/>
<!-- 这些过滤器可以在将事件传递给LoggerConfig之前接受或拒绝事件 -->
<Filter type="MarkerFilter" marker="EXCEPTION" onMatch="DENY" onMismatch="ACCEPT"/>
</Filters>
</Appender>
<File name="MyFile" fileName="logs/app.log">
<!-- append 如果为true - 默认值,则记录将附加到文件末尾。设置为false时,将在写入新记录之前清除该文件。
bufferedIO 如果为true - 默认值,记录将写入缓冲区,当缓冲区已满时,数据将写入磁盘;如果设置了immediateFlush,则写入记录时,文件锁定不能与bufferedIO一起使用。性能测试表明,即使启用了immediateFlush,使用缓冲I / O也可以显着提高性能。
bufferSize 当bufferedIO为true时,这是缓冲区大小,默认为8192字节。
fileName 要写入的文件的名称。如果该文件或其任何父目录不存在,则将创建它们。
immediateFlush 设置为true时 - 默认值,每次写入后都会进行刷新。这将保证数据写入磁盘,但可能会影响性能。每次写入后刷新仅在将此appender与同步记录器一起使用时才有用。即使immediateFlush设置为false,异步记录器和追加器也会在一批事件结束时自动刷新。这也保证了数据被写入磁盘但效率更高。
filePermissions POSIX格式的文件属性权限,以便在创建文件时应用。底层文件系统应支持POSIX文件属性视图。示例:rw -------或rw-rw-rw-等...
-->
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
<Kafka name="Kafka" topic="log-test">
<PatternLayout pattern="%date %message"/>
<Property name="bootstrap.servers">localhost:9092</Property>
</Kafka>
<RandomAccessFile name="MyFile" fileName="logs/app.log">
<!-- 总是被缓冲(这不能被关闭)
append 如果为true - 默认值,则记录将附加到文件末尾。设置为false时,将在写入新记录之前清除该文件。
fileName 要写入的文件的名称。如果该文件或其任何父目录不存在,则将创建它们。
bufferSize 缓冲区大小,默认为262,144字节(256 * 1024)。
immediateFlush 设置为true时 - 默认值,每次写入后都会进行刷新。这将保证数据写入磁盘,但可能会影响性能。每次写入后刷新仅在将此appender与同步记录器一起使用时才有用。即使immediateFlush设置为false,异步记录器和追加器也会在一批事件结束时自动刷新。这也保证了数据被写入磁盘但效率更高。
-->
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</RandomAccessFile>
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<!-- append 如果为true - 默认值,则记录将附加到文件末尾。设置为false时,将在写入新记录之前清除该文件。
bufferedIO 如果为true - 默认值,记录将写入缓冲区,当缓冲区已满时,数据将写入磁盘;如果设置了immediateFlush,则写入记录时,文件锁定不能与bufferedIO一起使用。性能测试表明,即使启用了immediateFlush,使用缓冲I / O也可以显着提高性能。
bufferSize 当bufferedIO为true时,这是缓冲区大小,默认为8192字节。
fileName 要写入的文件的名称。如果该文件或其任何父目录不存在,则将创建它们。
filePattern 存档日志文件的文件名模式。模式的格式取决于使用的RolloverPolicy。DefaultRolloverPolicy将同时接受与SimpleDateFormat兼容的日期/时间模式 和/或表示整数计数器的%i。该模式还支持在运行时进行插值,因此任何查找(例如DateLookup)都可以包含在模式中。
immediateFlush 设置为true时 - 默认值,每次写入后都会进行刷新。这将保证数据写入磁盘,但可能会影响性能。每次写入后刷新仅在将此appender与同步记录器一起使用时才有用。即使immediateFlush设置为false,异步记录器和追加器也会在一批事件结束时自动刷新。这也保证了数据被写入磁盘但效率更高。
policy 用于确定是否应发生翻转的策略。
strategy 用于确定存档文件的名称和位置的策略。
filePermissions POSIX格式的文件属性权限,以便在创建文件时应用。底层文件系统应支持POSIX文件属性视图。示例:rw -------或rw-rw-rw-等...
-->
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<!-- 策略组,满足任何一个策略,即可触发文件翻转 -->
<OnStartupTriggeringPolicy minSize="" /><!-- 在JVM启动时,并且达到或超过最小文件尺寸(minSize,默认值1) -->
<TimeBasedTriggeringPolicy /><!-- 当前日期不再与日志的开始日期匹配时。
interval 根据日期模式中最具体的时间单位进行翻转的频率。例如,使用以小时为最特定项目的日期模式,并且每4小时将增加4次翻转。默认值为1。
modulate 指示是否应调整间隔以使间隔边界上发生下一次翻转。例如,如果项目是小时,当前小时是凌晨3点,间隔是4,那么第一次翻转将在凌晨4点发生,然后下一次翻转将发生在上午8点,中午,下午4点等。
maxRandomDelay 表示随机延迟翻转的最大秒数。默认情况下,该值为0表示没有延迟。此设置在将多个应用程序配置为同时翻转日志文件的服务器上非常有用,并且可以跨时间分担这样做的负担。 -->
<SizeBasedTriggeringPolicy size="250MB"/><!-- 当日志大小达到20兆字节时。当与基于时间的触发策略结合使用时,文件模式必须包含%i, 否则目标文件将在每次翻转时被覆盖,因为SizeBased触发策略不会导致文件名中的时间戳值发生更改。如果在没有基于时间的触发策略的情况下使用,则SizeBased触发策略将导致时间戳值更改。 -->
<CronTriggeringPolicy schedule="" evaluateOnStartup="true" /><!-- 基于cron定时表达式,参考Quartz。 evaluateOnStartup 在启动时,将根据文件的最后修改时间戳评估cron表达式。 如果cron表达式指示应该在该时间与当前时间之间发生翻转,则文件将立即翻转。 -->
</Policies>
<DefaultRolloverStrategy max="20" />
<!-- fileIndex 如果设置为“max”(默认值),索引较高的文件将比索引较小的文件更新。如果设置为“min”,文件重命名和计数器将遵循上述固定窗口策略。
min 计数器的最小值。默认值为1。
max 计数器的最大值。达到此值后,将在后续翻转时删除旧档案。默认值为7。
compressionLevel 设置压缩级别0-9,其中0 =无,1 =最佳速度,9 =最佳压缩。仅适用于ZIP文件。
tempCompressedFilePattern 压缩期间存档日志文件的文件名模式。
-->
</RollingFile>
<RollingRandomAccessFile name="RollingRandomAccessFile" fileName="logs/app.log" filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<!-- append 如果为true - 默认值,则记录将附加到文件末尾。设置为false时,将在写入新记录之前清除该文件。
bufferSize 当bufferedIO为true时,这是缓冲区大小,默认为8192字节。
fileName 要写入的文件的名称。如果该文件或其任何父目录不存在,则将创建它们。
filePattern 存档日志文件的文件名模式。模式的格式取决于使用的RolloverPolicy。DefaultRolloverPolicy将同时接受与SimpleDateFormat兼容的日期/时间模式 和/或表示整数计数器的%i。该模式还支持在运行时进行插值,因此任何查找(例如DateLookup)都可以包含在模式中。
immediateFlush 设置为true时 - 默认值,每次写入后都会进行刷新。这将保证数据写入磁盘,但可能会影响性能。每次写入后刷新仅在将此appender与同步记录器一起使用时才有用。即使immediateFlush设置为false,异步记录器和追加器也会在一批事件结束时自动刷新。这也保证了数据被写入磁盘但效率更高。
policy 用于确定是否应发生翻转的策略。
strategy 用于确定存档文件的名称和位置的策略。
filePermissions POSIX格式的文件属性权限,以便在创建文件时应用。底层文件系统应支持POSIX文件属性视图。示例:rw -------或rw-rw-rw-等...
-->
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Logger name="com.foo.Bar" level="trace" additivity="false"> <!-- additivity 表示不追加到父一级loggers -->
<AppenderRef ref="Console"/>
</Logger>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>