使用log4j和log4j.yaml进行java日志记录

And*_*iuc 8 java logging yaml log4j

看起来java开发人员正在避免使用log4j.yaml进行日志记录,而是希望使用log4j.xml

我知道在log4j v2中有这方面的支持,但不明白为什么在互联网上没有与此相关的详细文档?

我找到了很多文档python/ruby​​ logging和yaml.我知道java是旧语言,但不明白为什么java开发人员对新事物不感兴趣.

更新:

发现怎么办,很难;)

log4j2.yml或log4j2-test.yml

# why yaml http://jessenoller.com/blog/2009/04/13/yaml-aint-markup-language-completely-different

status: WARN
monitorInterval: 900 # 15 min = 900 sec

properties:
    property:
        -
            name: pattern_layout_console
            value: "%d - [%t] %-5p - %c - %M(%L) | %m%n"

        -
            name: pattern_layout_console_no_threads
            value: "%d - %-5p - %c - %M(%L) | %m%n"

        -
            name: log_path
            value: "./logs"

appenders:
    console:
        -
            name: CONSOLE
            PatternLayout:
            pattern: "${pattern_layout_console_no_threads}"

    file:
        -
            name: DEBUG_FILE
            fileName: ${log_path}/debug.log
            PatternLayout:
                pattern: "${pattern_layout_console}"
             append: false

        -
            name: INFO_FILE
            fileName: ${log_path}/info.log
            PatternLayout:
                pattern: "${pattern_layout_console_no_threads}"
            append: false

######## .....    

loggers:
    logger:
        -   
            name: ch.company.module
            additivity: false
            appenderRef:
                -
                    ref: DEBUG_FILE
                    level: DEBUG
                -
                    ref: INFO_FILE
                    level: INFO
                -
                    ref: WARN_FILE
                    level: WARN
                -
                    ref: ERROR_FILE
                    level: ERROR
    root:
        level: INFO
        appenderRef:
              ref: CONSOLE
Run Code Online (Sandbox Code Playgroud)

的pom.xml

....
<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.4.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.4.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.4.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-yaml</artifactId>
        <version>2.4.3</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-1.2-api</artifactId>
        <version>2.1</version>
    </dependency>
    ... 
Run Code Online (Sandbox Code Playgroud)

kro*_*ock 1

问题似乎是“为什么人们使用 XML 配置而不是 YAML 配置?”

正如 @Stephen C 所暗示的答案是历史。Log4j 2 于 2014 年发布,添加了 YAML 和 JSON 配置格式支持。这意味着从 2001 年到 2014 年,log4j 配置文件的选项要么是 XML,要么是属性文件(在 log4j 2 中删除了通过属性文件进行的配置)。