博客
关于我
Log4j输出到控制台成功,写入文件失败 - Log4j和commons log的整合
阅读量:790 次
发布时间:2023-02-06

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

一、今天在使用commons-logging.jar和log4j.properties来输出系统日志时,发现日志能够成功输出到控制台,但无法写入指定文件中。经过详细分析,问题主要出在以下几个方面:

  • 引入Jar包不当:只引入了commons-logging.jar而未引入log4j.jar。在没有log4j.jar的情况下,commons-logging可能使用的是其自身的默认日志记录器,这样即使控制台显示日志,也无法正确生成或写入文件。

  • Jar包冲突:在系统的lib路径中添加了log4j.jar后,如果此时没有移除或解决commons-logging与log4j之间的兼容性问题,可能会导致日志记录出现混乱或无法写入文件。

  • 配置文件缺失或错误:确保log4j.properties文件正确配置,特别是appender的设置。如果没有正确配置输出终端和布局模式,日志可能无法正确写入文件。

  • 二、Log4j和commons-logging的关系及使用方法:

  • Logger.getLogger()与LogFactory.getLog()的区别

    • Logger.getLogger()使用的是log4j的日志记录方式。
    • LogFactory.getLog()则来自commons-logging包,提供一个日志接口,兼顾轻量级和不依赖具体日志实现工具。
  • commons-logging的工作原理

    • commons-logging通过发现机制(根据CLASSPATH和系统属性)确定使用哪种底层日志记录工具。
    • 首先查找commons-logging.properties文件,若不存在则查找系统属性org.apache.commons.logging.Log,若仍未找到则使用log4j作为默认日志记录工具。
  • Log4j的架构

    • Log4j由三个主要板块组成:日志写入器(Appender)、日志输出终端(Target)、日志布局模式(Layout)。
    • Logger类是核心,提供了获取日志记录器的方法,支持多种日志级别和输出格式。
  • 四、详细介绍Log4j的使用:

  • 日志级别(Level)

    • Log4j定义了六个级别,从低到高依次为:DEBUG、INFO、WARN、ERROR、FATAL、OFF。默认日志级别为DEBUG,子logger会继承父logger的日志级别。
  • 输出终端(Appender)

    • Log4j提供多种Appender实现,如ConsoleAppender(控制台)、FileAppender(文件)、RollingFileAppender(滚动文件)等。
    • 每个Appender可以配置不同的输出目标和格式。
  • 输出布局模式(Layout)

    • Log4j提供多种Layout实现,如PatternLayout(灵活格式化)、SimpleLayout(包含级别和信息)、TTCCLayout(包含时间、线程等信息)等。
    • Layout用于格式化日志信息,提升日志可读性和分析性。
  • 五、Log4j的配置:

  • 配置文件格式

    • 通常使用Java properties文件进行配置,配置项以log4j开头,涵盖rootLogger、appender、layout等设置。
    • 配置示例:log4j.rootLogger=DEBUG, CONSOLE, FILE,说明rootLogger使用DEBUG级别,输出到控制台和文件。
  • 常见配置项

    • log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender:将日志输出到控制台。
    • log4j.appender.FILE=org.apache.log4j.FileAppender:将日志输出到文件。
    • log4j.appender.FILE.File=C:\logs\x.log:指定文件路径。
    • log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender:实现滚动文件日志。
    • log4j.appender.ROLLING_FILE.MaxFileSize=10KB:设置文件最大大小。
  • 布局模式配置

    • log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    • log4j.appender.FILE.layout.ConversionPattern=%d-%c-%p-%m%n:自定义日志格式。
  • 通过以上详细分析和配置,可以解决日志无法写入文件的问题,确保日志信息能够正确输出到指定位置。

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

    你可能感兴趣的文章
    Liunx 多命令/管道符/wc命令/man命令汉化
    查看>>
    liunx 服务内存消耗100% 怎么处理
    查看>>
    liunx 网络基础管理
    查看>>
    liunx-FTP服务器_无需整理
    查看>>
    liunx上安装MySQL没有默认my.cnf文件解决方案
    查看>>
    liunx上安装nodejs步骤
    查看>>
    Liunx中各种压缩包及解压命令
    查看>>
    liunx命令查看cpu使用率和负载情况
    查看>>
    liunx快速修改文件夹或文件的属性
    查看>>
    Liunx挂载nfts盘数据方法
    查看>>
    liunx查找当前目录文件及子目录文件下的中文并替换
    查看>>
    liunx环境下的mysql数据库配置文件my.conf内的参数含义
    查看>>
    liunx目录和文件管理(一)
    查看>>
    liunx系统中的文件压缩与解压
    查看>>
    liunx编写启动,kill进程脚本
    查看>>
    liux的学习笔记
    查看>>
    live555 testrtspclient客户端建立rtp over tcp 异常问题
    查看>>
    LiveBOS UploadFile.do 任意文件上传漏洞复现(XVE-2023-21708)
    查看>>
    LiveData Call Adapter for Retrofit 使用教程
    查看>>
    LiveData的分析与简单使用
    查看>>