博客
关于我
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/

    你可能感兴趣的文章
    LiveGBS user/save 逻辑缺陷漏洞复现(CNVD-2023-72138)
    查看>>
    localhost:5000在MacOS V12(蒙特利)中不可用
    查看>>
    logstash mysql 准实时同步到 elasticsearch
    查看>>
    Luogu2973:[USACO10HOL]赶小猪
    查看>>
    mabatis 中出现< 以及> 代表什么意思?
    查看>>
    Mac book pro打开docker出现The data couldn’t be read because it is missing
    查看>>
    MAC M1大数据0-1成神篇-25 hadoop高可用搭建
    查看>>
    mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
    查看>>
    Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
    查看>>
    MangoDB4.0版本的安装与配置
    查看>>
    Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
    查看>>
    mapping文件目录生成修改
    查看>>
    MapReduce程序依赖的jar包
    查看>>
    mariadb multi-source replication(mariadb多主复制)
    查看>>
    MariaDB的简单使用
    查看>>
    MaterialForm对tab页进行隐藏
    查看>>
    Member var and Static var.
    查看>>
    memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
    查看>>
    memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
    查看>>
    Memcached:Node.js 高性能缓存解决方案
    查看>>