开发产品时一个进程对应一个开发项目,一个项目对应一个日志配置,这是best practice,但有时一个(Eclipse中的)开发项目中包含了多个应用(分别多个进程运行),共享一个配置文件,但生成的日志要分开放在不同的文件里,应该怎么办?假设项目中包括A和B两个应用,B的代码都在com.foo包及子包(com.foo开头的包,如com.foo.bar)中。
方式1:完全分开
<configuration>
<appender name="CONSOLE" .../>
<appender name="APP_A" .../>
<appender name="APP_B" .../>
<logger name="com.foo" additivity="false" level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="APP_B" />
</logger>
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="APP_A"/>
</root>
</configuration>
方式2 :A包含B
<configuration>
<appender name="CONSOLE" .../>
<appender name="APP_A" .../>
<appender name="APP_B" .../>
<logger name="com.foo" additivity="true" level="INFO">
<appender-ref ref="APP_B" />
</logger>
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="APP_A"/>
</root>
</configuration>
方式2与方式1相比,屏幕输出(即CONSOLE的行为)完全一样,各自输出各自的,但APP_A关联的日志文件中将包含A和B所有的日志。