log4j中 PatternLayout语法

  |   0 评论   |   0 浏览
package club.log;

import org.apache.log4j.*;

public class Log4jTest {

    private static Logger log = Logger.getLogger(Log4jTest.class);
    /**
     *         <dependency>
     *             <groupId>log4j</groupId>
     *             <artifactId>log4j</artifactId>
     *             <version>1.2.17</version>
     *             <scope>compile</scope>
     *         </dependency>
     * 模式字符串简介:
     *   %c:Category名称。还可以使用%c{n}的格式输出Category的部分名称,其中n为正整数,输出时会从Category名称的右侧起查n个".",然后截取第n个"."右侧的部分输出,例如Category的名称为"x.y.z",指定格式为"%c{2}",则输出"y.z"。
     *   %C:输出信息时Category所在类的名称,也可以使用%C{n}的格式输出。
     *   %d:输出信息的时间,也可以用%d{FormatString}的格式输出,其中FormatString的值请参考TTCCLayout的setDateFormat方法,但NULL和RELATIVE在%d中无法使用。
     *   %F:输出信息时Category所在类文件的名称。
     *   %l:输出信息时Category所在的位置,使用"%C.%M(%F:%L)"可以产生同样的效果。
     *   %L:输出信息时Category在类文件中的行号。
     *   %m:信息本身。
     *   %M:输出信息时Category所在的方法。
     *   %n:换行符,可以理解成回车。
     *   %p:日志级别。
     *   %r:输出信息所用的时间,以毫秒为单位。
     *   %t:当前线程。
     *   %x:输出和当前线程相关的NDC信息。
     *   %X:输出与当前现成相关的MDC信息。
     *   %%:输出%。
     * 此外,还可以在%与模式字符之间加上修饰符来设置输出时的最小宽度、最大宽度及文本对齐方式,例如:
     *   %30d{DATE}:按当前所在地区显示日期和时间,并指定最小宽度为30,当输出信息少于30个字符时会补以空格并右对齐。
     *   %-30d{DATE}:也是按当前所在地区显示日期和时间,指定最小宽度为30,并在字符少于30时补以空格,但由于使用了"-",因此对齐方式为左对齐,与默认情况一样。
     *   %.40d{DATE}:也是按当前所在地区显示日期和时间,但指定最大宽度为40,当输出信息多于40个字符时会将左边多出的字符截掉。此外,最大宽度只支持默认的左对齐方式,而不支持右对齐。
     *   %30.40d{DATE}:如果输出信息少于30个字符就补空格并右对齐,如果多于40个字符,就将左边多出的字符截掉。
     *   %-30.40d{DATE}:如果输出信息少于30个字符就补空格并左对齐,如果多于40个字符,就将左边多出的字符截掉
     * @param args
     */
    public static void main(String[] args) {
        NDC.push("fdsafda");
        NDC.push("123123");
        MDC.put("aaa","bbb");
        MDC.put("ccc","ddd");
//        SimpleLayout layout = new SimpleLayout();
        String format = "%p %C{4} %d{yyyy-MM-dd HH:mm:ss.SS} %F %l %m %M %x %X %n";
        PatternLayout layout = new PatternLayout(format);
        ConsoleAppender appender = new ConsoleAppender(layout);

        log.addAppender(appender);
        log.setLevel(Level.INFO);

        log.debug("here is debug");
        log.info("here is info");
        log.warn("here is warn");
        log.error("here is error");
        log.fatal("here is fatal");
        log.log(Level.ERROR,"dsafdsafda");

    }
}


标题:log4j中 PatternLayout语法
作者:码农路上
地址:http://wujingjian.club/articles/2021/06/09/1623232476033.html