项目中我们可能需要重新定义一些 log 规则,也不想沿用已有的日志配置文件。此时就需要自定义日志配置文件,并加载,sofa-common-tools 提供了这样的工具。

引入依赖:

        <dependency><groupId>com.alipay.sofa.common</groupId><artifactId>sofa-common-tools</artifactId><version>1.0.19</version></dependency>

新建如下内容:

--- com.zero\- log|     \- log4j2|     |       \-log-conf.xml|     |- log4j|     |       \-log-conf.xml|     \- logback|             \-log-conf.xml|-MyLogger.java|-MyLoggerFactory.java

log-conf.xml里面对应各种实现的日志配置。

MyLogger.java和MyLoggerFactory.java如下:

package com.zero.log;import org.slf4j.Logger;
import java.io.File;public class MyLogger {private static Logger monitorLog;private static volatile boolean inited;private static final String LOG_PATH = "logging.path";private static final String LOG_PATH_DEFAULT = System.getProperty("user.home") + File.separator+ "logs";static {init();monitorLog = createLogger("monitor");}public static void init() {if (!inited) {inited = true;initProperties();}}private static void initProperties() {String logPath = System.getProperty(LOG_PATH, LOG_PATH_DEFAULT);}private static Logger createLogger(final String loggerName) {return MyLoggerFactory.getLogger(loggerName);}public static Logger getMonitorLog() {return monitorLog;}
}
package com.zero.log;import com.alipay.sofa.common.log.LoggerSpaceManager;
import org.slf4j.Logger;public class MyLoggerFactory {/** 实际生效的LogSpace */private static String currentSpace = null;static {currentSpace = "com.zero";}public static Logger getLogger(Class<?> clazz) {if (clazz == null) {return null;}return getLogger(clazz.getCanonicalName());}public static Logger getLogger(String name) {if (name == null || name.isEmpty()) {return null;}Logger logger = LoggerSpaceManager.getLoggerBySpace(name, currentSpace);return logger;}public static String getCurrentSpace() {return currentSpace;}
}

sofa里面实现原理是,根据 currentSpace 即 com.zero 和项目里面的日志框架实现,去找 com/zero/log/目录下面的日志配置文件。如果是log4j2则加载com/zero/log/log4j2/log-conf.xml这个日志配置文件。

注意项目打包时要下如下配置,否则 com/zero/log/里面的*.xml不会打入到jar包:

    <build><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory></resource></resources></build>

使用sofa-common-tools自定义日志相关推荐

  1. ATS 5.3.0中自定义日志格式文件logs_xml.config解读

    缘起 近来因为公司项目需要,阅读了一部分ATS logging system的源码实现,越发觉得logs_xml.config文件的配置非常重要,而我目前只是实践了一点它的皮毛.为此,根据自己的理解, ...

  2. java自定义日志级别_自定义log4j日志级别

    因为项目中需要输出一些特别的日志来做数据统计.如果开启log4j提供的INFO日志级别,每天生成的日志文件就会变得越来越大.这样就得写个定 时任务来删除这个文件.为了只输出所需的日志级别,唯有自己定义 ...

  3. Dubbo自定义日志拦截器

    前言 上一篇文章 Spring aop+自定义注解统一记录用户行为日志 记录了 web层中通过自定义注解配合Spring aop自动记录用户行为日志的过程.那么按照分布式架构中Dubbo服务层的调用过 ...

  4. Dubbo自定义日志拦截器 1

    前言 上一篇文章 Spring aop+自定义注解统一记录用户行为日志 记录了 web层中通过自定义注解配合Spring aop自动记录用户行为日志的过程.那么按照分布式架构中Dubbo服务层的调用过 ...

  5. ATS 4.2.3自定义日志文件格式的方法

    我只是总结归纳了别人的方法,并做了实际验证,在这里记录一下,以备大家参考,向参考文献中的各位前辈致敬. ATS默认的日志格式是squid.log,我们可以在/var/log/trafficserver ...

  6. log4cplus使用(二)-自定义日志等级

    log4cplus支持用户自定义日志等级,操作也比较简单,使用之前贴如下宏定义 #define LOG4CPLUS_MACRO_CREASH_LOG_LEVEL(pred) LOG4CPLUS_UNL ...

  7. gin自定义日志格式

    gin自定义日志格式 func main() {router := gin.New()// LoggerWithFormatter 中间件会将日志写入 gin.DefaultWriter// By d ...

  8. yii2 java_YII2 自定义日志路径

    YII 提供的日志写入方法: 1.Yii::getLogger()->log($message, $level, $category = 'application') 2.Yii::trace( ...

  9. ELK 经典用法—企业自定义日志收集切割和mysql模块

    ELK 经典用法-企业自定义日志收集切割和mysql模块 一.收集切割公司自定义的日志 很多公司的日志并不是和服务默认的日志格式一致,因此,就需要我们来进行切割了. 1.需切割的日志示例 2018-0 ...

最新文章

  1. 八成名校AI教授,都拿过谷歌微软亚马逊们的钱
  2. 语义分割--Deep Dual Learning for Semantic Image Segmentation
  3. 开始测试React Native App(下篇)
  4. 设计模式--装饰者模式
  5. java反射的工具类的函数集合
  6. 供来宾访问计算机打开安全吗,计算机安全设置操作手册(22页)-原创力文档
  7. 基于FFMPEG 的跨平台视频编解码研究
  8. Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)【Dalston版】
  9. mysql bcmod_nextcloud网盘搭建:Ubuntu18.04+Nginx+Mysql
  10. Mongodb3.4 复制集及分片配置
  11. 百度之星作为座位调整java_百度之星2006年初赛 座位调整
  12. 华为背锅?微博大V质疑华为P30 Pro拍月亮造假 公司称误导观众已开除
  13. 汇编语言中xor指令_汇编语言基本指令
  14. C语言经典游戏开发,零基础也能打造微信飞机大战
  15. camera具体曝光时间readout时间出图时间
  16. [计算机基础]浮点数在计算机中的表示
  17. 怎样抠图怎么把背景换成白色?几个步骤教你轻松掌握
  18. Interview:算法岗位面试—BAT公司问题面试之计算机基础(进程与线程的区别)、经典概率问题等集锦
  19. 已更新 联通 电信 tiny模式
  20. 让 ChatGPT 如虎添翼 2.0

热门文章

  1. JAVA基础之二维数组三维数组及应用
  2. Magisk模块开发指南
  3. php+源码加密思想,PHP源码加密方法
  4. RDKit中的分子3D构象生成
  5. 【田姓】宗谱——【迁徙分布】
  6. android卸载保留数据,谷歌Android 10新特性:应用卸载时可保留数据
  7. 条码查询接口,商品条码和药品条码查询
  8. semantic-ui基础使用
  9. 树莓派对继电器的实验及其编译
  10. 使用树莓派构建嵌入式C++调试环境