Apache manual只是说:“
Log4j 2的配置可以通过以下四种方式之一完成:
通过用XML,JSON或YAML编写的配置文件 以编程方式,通过创建ConfigurationFactory和Configuration实现 以编程方式,通过调用Configuration接口中公开的API将组件添加到默认配置 以编程方式,通过调用内部Logger类的方法。
ID'想知道是否有明显的趋势支持这四种方式中的一种?
这个问题的背后是将Log4j(版本1)配置实践从.properties文件转换为XML格式。搜索问题的答案并获得正确的答案却非常令人沮丧,但不完全是您正在使用的配置方法。
我有一个新的log4j(版本2)项目即将发布,我想使用JSON作为配置格式来对抗默认的XML方式(原因:美观和轻微的性能优势(?))。
如果我选择基于XML的JSON配置格式,是否会遇到问题或者没有获得多少功能?
使用编程方法而不是静态配置文件的任何理由?
用例(理想情况下)应用程序服务器(从服务器上的某个文件路径)读取单个配置文件。然后,此单个.json文件将用于为每个应用程序应用日志级别,并为每个应用程序生成至少3个不同的日志(常规,错误,自定义日志级别)。设计用于在服务器上运行的应用程序不到10个。
答案 0 :(得分:6)
使用XML或JSON没有性能优势或劣势。我个人更喜欢XML这两个原因:(但它们不是很大的问题,所以当然这取决于你......)
我不推荐编程配置。它更复杂,取决于实现细节,将来可能会发生变化。恕我直言,这将是一堆很少或没有任何好处的工作。
对于您描述的用例,您可以在配置中使用system properties,这样多个应用可以共享相同的配置,但可以通过更改每个应用的属性值来登录到不同的位置。
更新:
Log4j2在以后的版本中添加了API for programmatic configuration。此API不公开实现细节。但是它最适合从头开始配置。如果要修改现有配置,则需要使用实现类。