自定义日志打印
前言:
关于一些日志收集的一些小想法,如果系统中自定义个日志打印类,类中组织好相关日志信息,不管是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中实现相关的内容,不然直接加上标签会抛错。