如何将log4j与动态文件名的追加器一起多次使用



我想多次使用log4j Appender,但使用不同的文件名:

附件:

<RollingFile name="MODULE" fileName="log/module-${ModuleName}.log" append="true" filePattern="log/module-${ModuleName}-%d{yyyy-MM-dd}_%i.log" >
<PatternLayout pattern="%d{yyyy/MM/dd-HH:mm:ss} %-5p %C:%M:%L ~ %m%n"/>
<Policies>
<OnStartupTriggeringPolicy />
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>

记录器:

<Logger name="MOD1" level="debug">
<Properties>
<Property name="ModuleName">MOD1</Property>
</Properties>
<appender-ref ref="MODULE"/>
</Logger>
<Logger name="MOD2" level="error">
<Properties>
<Property name="ModuleName">MOD2</Property>
</Properties>
<appender-ref ref="MODULE"/>
</Logger>

但这行不通。如何将变量从Logger传递到Appender?最后我想要2个文件

/log/module-MOD1.log <- Debug messages from MOD1
/log/module-MOD2.log <- Error messages from MOD2

感谢的帮助

只需添加另一个Appender并连接每对LoggerAppender

例如:

...
<RollingFile name="MODULE1" fileName="./log/module1-${ModuleName}.log" append="true" filePattern="./log/module1-${ModuleName}-%d{yyyy-MM-dd}_%i.log" >
<PatternLayout pattern="%d{yyyy/MM/dd-HH:mm:ss} %-5p %C:%M:%L ~ %m%n"/>
<Policies>
<OnStartupTriggeringPolicy />
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
<RollingFile name="MODULE2" fileName="./log/module2-${ModuleName}.log" append="true" filePattern="./log/module2-${ModuleName}-%d{yyyy-MM-dd}_%i.log" >
<PatternLayout pattern="%d{yyyy/MM/dd-HH:mm:ss} %-5p %C:%M:%L ~ %m%n"/>
<Policies>
<OnStartupTriggeringPolicy />
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
...
...
<Logger name="com.foo.bar.ClassName1" level="debug">
<Properties>
<Property name="ModuleName">MOD1</Property>
</Properties>
<appender-ref ref="MODULE1"/>
</Logger>
<Logger name="com.foo.bar.ClassName2" level="error">
<Properties>
<Property name="ModuleName">MOD2</Property>
</Properties>
<appender-ref ref="MODULE2"/>
</Logger>
...

有同样的问题,所以我也回答了。所以,请访问这里。

最新更新