博客
关于我
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:/logs或C:/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.activity和com.chuanliu.platform.activity.solr的additivity属性都设置为false
  • 环境变量配置:

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

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

    你可能感兴趣的文章
    python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
    查看>>
    Python图像处理:从内存加载jpeg
    查看>>
    python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
    查看>>
    python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
    查看>>
    python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
    查看>>
    python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
    查看>>
    Python哪个版本最稳定好用2023.10.19
    查看>>
    Python和黑客技术的渊源
    查看>>
    Python和RF编写接口自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>
    python和java哪个更值得学——来自知乎高赞回答
    查看>>
    python和c混合编程 github_在pycharm中使用git版本管理以及同步github的方法
    查看>>
    python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
    查看>>
    Python命名中尾随下划线有什么好处?
    查看>>
    Python启动脚本
    查看>>
    Python听写汇总结果
    查看>>
    python吊打Excel?屁!那是你不会用!
    查看>>
    Python合并两张图片 | 先叠透明度再合并 (附Demo)
    查看>>
    python各进制的表述与转换
    查看>>
    python各种库安装
    查看>>