博客
关于我
log4j1/log4j2中category的配置以及log的输出位置(windows和linux通用的log输出位置)...
阅读量:800 次
发布时间:2023-02-06

本文共 3304 字,大约阅读时间需要 11 分钟。

一、场景和需求

我们有三个独立的项目模块,分别负责不同的功能:基础服务、存储服务和搜索服务。为了方便管理和追踪,我们需要统一记录所有日志到一个全局日志文件中,同时还需要为搜索模块单独设置日志文件。

1.1 日志文件结构

  • full.log:记录所有模块的日志信息
  • solr.log:专门记录搜索模块下的日志信息
  • 存储服务相关日志:位于com.chuanliu.platform.activity.persist目录下
  • 基础服务相关日志:位于com.chuanliu.platform.activity目录下
  • 搜索服务相关日志:位于com.chuanliu.platform.activity.solr目录下

1.2 环境适配

为了适配不同操作系统的目录结构,我们需要根据环境设置不同的日志存储位置。例如:

  • 开发环境C:/logs
  • 测试环境/usr/local/var/logs
  • 生产环境/usr/local/var/logs

二、日志配置方案

我们可以使用log4j来实现日志记录功能,以下是推荐的配置方式:

log4j.rootLogger = infolog4j.debug = falselog4j.category.com.chuanliu.platform.activity = info, full, stdoutlog4j.additivity.com.chuanliu.platform.activity.platform.activity = falselog4j.category.com.chuanliu.platform.activity.solr = info, solrlog4j.additivity.com.chuanliu.platform.activity.platform.activity.solr = false

2.1 日志输出设置

log4j.appender.full = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.full.File = ${LogFile.Location}/full.loglog4j.appender.full.DatePattern = '.'yyyy-MM-ddlog4j.appender.full.layout = org.apache.log4j.PatternLayoutlog4j.appender.full.layout.conversionPattern = %d [%t] %-5p %c{1} - %m%nlog4j.appender.full.ImmediateFlush = truelog4j.appender.full.append = truelog4j.appender.solr = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.solr.File = ${LogFile.Location}/solr.loglog4j.appender.solr.DatePattern = '.'yyyy-MM-ddlog4j.appender.solr.layout = org.apache.log4j.PatternLayoutlog4j.appender.solr.layout.conversionPattern = %d [%t] %-5p %c{1} - %m%nlog4j.appender.solr.ImmediateFlush = truelog4j.appender.solr.append = truelog4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = [%d][%p]%t: %m%n# MyBatis日志等级设置log4j.logger.mybatis = TRACElog4j.logger.springframework.web = DEBUG

2.2 日志分类

通过上述配置,我们可以确保:

  • 所有com.chuanliu.platform.activity包下的日志都记录到full.log
  • com.chuanliu.platform.activity.solr包下的日志单独记录到solr.log
  • 其他模块的日志也会被正确收集和记录

2.3 环境自定义

为了适配不同操作系统,我们可以通过配置文件来设置日志存储路径。例如:

  • 在开发环境中,定义LogFile.Location=C:/logs
  • 在测试环境中,定义LogFile.Location=/usr/local/var/logs
  • 在生产环境中,定义LogFile.Location=/usr/local/var/logs

2.4 跨平台适配

在实际应用中,我们需要确保日志路径在不同操作系统下都能正确解析:

  • Linux:直接使用/usr/local/var/logs路径
  • Windows:建议使用C:/logsC:/var/logs路径
    • 注意:在Windows中,C:/C:\是不同的路径
    • 如果使用C:/格式,确保文件系统支持这种写法

2.5 部署实践

  • Eclipse环境:在项目根目录下创建logs目录,配置LogFile.Location=C:/logs
  • Tomcat环境:在conf目录下添加logging.properties文件,配置LogFile.Location=/usr/local/var/logs
    log4j.rootLogger = INFOlog4j.appender.full=DailyRollingFileAppenderlog4j.appender.full.File=${LogFile.Location}/full.log...

2.6 日志重载检测

在实际应用中,如果需要动态重载日志配置文件,可以使用log4j-properties.dtd格式:

LogFile.Location
${env:LogFile.Location}
${LogFile.Location}/full.log
...
${LogFile.Location}/solr.log
...

2.7 日志查看

  • Linux:使用tail -f /usr/local/var/logs/full.log查看实时日志
  • Windows:使用type C:\logs\full.log查看实时日志
  • IDE环境:在Eclipse中设置日志文件的绝对路径,直接打开日志文件查看

2.8 常见问题

  • 日志文件夹不存在

    • 在部署前,确保日志存储路径存在
    • 使用mkdir -p /usr/local/var/logs创建必要的目录
  • 日志重复输出

    • 检查additivity属性,确保com.chuanliu.platform.activitycom.chuanliu.platform.activity.solradditivity属性都设置为false
  • 环境变量配置

    • 如果使用环境变量,确保在相关配置文件中正确引用
    • 比如在logging.properties中设置LogFile.Location=${env:LogFile.Location}
  • 通过以上配置和实践,我们可以轻松实现多模块日志统一管理和跨平台适配,确保日志记录的准确性和可追溯性。

    转载地址:http://udufk.baihongyu.com/

    你可能感兴趣的文章
    mysql 添加索引
    查看>>
    MySQL 添加索引,删除索引及其用法
    查看>>
    mysql 状态检查,备份,修复
    查看>>
    MySQL 用 limit 为什么会影响性能?
    查看>>
    MySQL 用 limit 为什么会影响性能?有什么优化方案?
    查看>>
    MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
    查看>>
    mysql 用户管理和权限设置
    查看>>
    MySQL 的 varchar 水真的太深了!
    查看>>
    mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
    查看>>
    MySQL 的instr函数
    查看>>
    MySQL 的mysql_secure_installation安全脚本执行过程介绍
    查看>>
    MySQL 的Rename Table语句
    查看>>
    MySQL 的全局锁、表锁和行锁
    查看>>
    mysql 的存储引擎介绍
    查看>>
    MySQL 的存储引擎有哪些?为什么常用InnoDB?
    查看>>
    Mysql 知识回顾总结-索引
    查看>>
    Mysql 笔记
    查看>>
    MySQL 精选 60 道面试题(含答案)
    查看>>
    mysql 索引
    查看>>
    MySQL 索引失效的 15 种场景!
    查看>>