我使用JSON格式配置了log4j2,例如:
{
"configuration": {
"monitorInterval": 60,
"properties": {
...
},
"appenders": {
...
},
"loggers": {
"asyncRoot": {
...
等。 配置非常复杂,因此需要对将来尝试理解或更改它的人进行一些澄清。
如果此配置是XML格式,我可以指定注释,明确配置中的每个部分(将配置更改为XML不是一个选项)。但是JSON没有评论这个概念,推荐是to specify comments as data。 E.g:
{
"configuration": {
"monitorInterval": 60,
"_comment_": "here we go",
"properties": {
但是我不确定在log4j2情况下这样的东西是不是一个好主意:它不是让配置更清晰,而是实际上增加了它的批量,这些评论与实际数据没有明显的分离,我不是确定它是否会导致任何稳定性/性能问题解析配置(如您所见,此配置每60秒解析一次,所以...)
是否有任何常见/推荐的方法来描述log4j2的配置? 或者您是否成功测试/使用上述方法(评论为数据)?
提前致谢。
答案 0 :(得分:1)
可以在object
配置文件中添加内嵌注释。你可以用以下方式写评论 -
__dict__
这是因为log4j2 JSON
使用{
"configuration": { // this is comment
"monitorInterval": 60, // set monitor interval here
"properties": {
...
},
"appenders": {
...
},
"loggers": { // set logger details here
"asyncRoot": {
...
来解析log4j2
配置文件,而Jackson
可以选择在JSON
中启用评论。
虽然以这种方式编写注释可能会显示IDE中的错误,例如eclipse,因为Jackson
标准不支持注释。
答案 1 :(得分:0)
其他信息:Log4J2在JsonConfiguration implementation中明确启用了评论:
protected ObjectMapper getObjectMapper() { return new ObjectMapper().configure(JsonParser.Feature.ALLOW_COMMENTS, true); }
它引用com.fasterxml.jackson.core
的属性,该属性描述了支持哪些注释的详细信息以及原因:
/** * Feature that determines whether parser will allow use * of Java/C++ style comments (both '/'+'*' and * '//' varieties) within parsed content or not. *<p> * Since JSON specification does not mention comments as legal * construct, * this is a non-standard feature; however, in the wild * this is extensively used. As such, feature is * <b>disabled by default</b> for parsers and must be * explicitly enabled. */ ALLOW_COMMENTS(false)
Log4J中的任何地方都没有记录功能,同时请注意默认情况下Jackson已将其禁用。