如何开启Dubbo框架内部的日志?

欢迎加入DUBBO交流群:259566260

这里将对如何在自己的项目里面开启dubbo框架自己的日志,,并对输出的日志进行控制。在讲这些之前,先看看dubbo在处理日志的时候是怎么做的?

第三方日志框架优先级

Log4j最高(默认就用这个)

SLF4J次高(上面没有采用这个)

Common Logging(jcl就是common logging)次低(Log4j和SLF4J在项目中均没有就用这个)

JDK log最低(最后的选择)

上面说的有和没有是指你的项目classpath下面有没有对应的jar包,如果有则表示支持对应的日志实现。下面粘贴出Dubbo选择日志提供方的代码:

// 查找常用的日志框架static {String logger = System.getProperty("dubbo.application.logger");if ("slf4j".equals(logger)) {setLoggerAdapter(new Slf4jLoggerAdapter());} else if ("jcl".equals(logger)) {setLoggerAdapter(new JclLoggerAdapter());} else if ("log4j".equals(logger)) {setLoggerAdapter(new Log4jLoggerAdapter());} else if ("jdk".equals(logger)) {setLoggerAdapter(new JdkLoggerAdapter());} else {try {setLoggerAdapter(new Log4jLoggerAdapter());} catch (Throwable e1) {try {setLoggerAdapter(new Slf4jLoggerAdapter());} catch (Throwable e2) {try {setLoggerAdapter(new JclLoggerAdapter());} catch (Throwable e3) {setLoggerAdapter(new JdkLoggerAdapter());}}}}}上面这段静态块是在LoggerFactory里面,说明只要LoggerFactory类一加载就会去选择对应的日志提供方。大家可能会发现对日志的提供方其实是可以通过配置来指定的,因为静态块一开始是从当前jvm环境中获取dubbo.application.logger,这个参数是同java -Ddubbo.application.logger=xxxx去指定的,如果是放在容器里面,就需要配置在容器启动的jvm参数里面。上面介绍了dubbo中日志相关的实现。下面讲讲在项目总怎么来让dubbo能够在项目里面输出日志。

<appender name="dubboAppender" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="E:/dubbo.log" /><param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern"value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} – %m%n" /></layout> </appender> <logger name="com.alibaba.dubbo" additivity="false"><priority value ="info"/><appender-ref ref="dubboAppender" /> </logger>

public class CustomContextLoaderListener extends ContextLoaderListener {static{//设置dubbo使用slf4j来记录日志System.setProperty("dubbo.application.logger","slf4j");}}<listener><listener-class> com.xxx.xxx.CustomContextLoaderListener</listener-class></listener>

<?xml version="1.0" encoding="UTF-8" ?><configuration><substitutionProperty name="LOG_HOME_DUBBO" value="C:/wls/dubbo"/><timestamp key="byDate" datePattern="yyyyMMdd"/><!– dubbo log –><appender name="dubboRolling" class="ch.qos.logback.core.rolling.RollingFileAppender"><Encoding>UTF-8</Encoding><file>${LOG_HOME_DUBBO}/MTP-DUBBO.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME_DUBBO}/DEMO-%d{yyyy-MM-dd}.%i-DUBBO.zip</fileNamePattern><maxHistory>30</maxHistory><TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><MaxFileSize>100MB</MaxFileSize></TimeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} – %msg%n</pattern><immediateFlush>true</immediateFlush></encoder></appender><logger name="com.alibaba.dubbo" level="DEBUG"><appender-ref ref="dubboRolling"/></logger></configuration>

懂得接受失败的人,就是懂得人生真谛的人,

如何开启Dubbo框架内部的日志?

相关文章:

你感兴趣的文章:

标签云: