Loading

自定义日志打印

前言:

  关于一些日志收集的一些小想法,如果系统中自定义个日志打印类,类中组织好相关日志信息,不管是json还是xml,继而传给相关的系统,比如elasticsearch。

  下文基于springboot+logback
  log4j也支持实现接口打印日志

 

1,自定义日志打印

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.Layout;
import ch.qos.logback.core.UnsynchronizedAppenderBase;

/**
 * @Author: zhangning
 * @description:
 * @Date: 2020/10/22 12:02
 */
public class MyAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
    Layout<ILoggingEvent> layout;

    //自定义配置
    String printString ="my log ";
    @Override
    protected void append(ILoggingEvent event) {
        System.out.print(printString + ":" + event.getMessage() + "\n");
    }

    @Override
    public void start(){
        //init
        super.start();
    }

    @Override
    public void stop()
    {
        //释放
        super.stop();
    }
}

2,logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">

    <contextName>logback</contextName>

    <property name="log.path" value="/data/applogs/etcinv-saas-server/etcinv-saas-server.log"/>
    <!--    <property name="log.businessLogger.path" value="/data/applogs/businessLogger/saas-app-server/businessLog"/>-->

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="myLogBack" class="cn.ichar.autocode.test.MyAppender">

    </appender>

    <root level="debug">
<!--        <appender-ref ref="console"/>-->
        <appender-ref ref="myLogBack"/>
    </root>

</configuration>

如果想使用 比如常见的<encoder>标签需要自己的MyAppender中实现相关的内容,不然直接加上标签会抛错。

 

posted @ 2020-10-26 17:04  ichar  阅读(319)  评论(0编辑  收藏  举报