java - 如何将 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
连接每一对。Logger
Appender
例如 :
...
<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>
...
有同样的问题,所以我也在那里回答。所以,请访问这里。
推荐阅读
- reactjs - 如何从位于“应用程序”组件中的组件滚动到另一个组件
- docker - 为什么我的 Kubernetes 部署注册为不可用,即使它在 Docker 中运行?
- python - 重命名数据框列名
- angular - 如何修复“polyfills.js:61462 无法重新计算设备参数”。离子/角度应用中的错误
- javascript - safari ios 上的录音是空的
- c - 制作从 DS18B20 读取温度并显示在 LCD 上的功能
- c# - 由于无限循环,Unity 程序停止响应
- javascript - 如何使用相对路径生成单个 *.d.ts 或多个
- swift - Swift 字典内的值访问和更改(涉及数组的字典)
- r - 如何有条件地总结组中的其他条目 - R