修改log4j.properties文件——输出日志到指定路径的总结

    xiaoxiao2023-11-23  166

    一、log4j.properties是什么

    简单说就是一个日志的配置文件,其中包含了与日志相关的各种配置信息,修改的话需要管理员权限。

    在我的Ubuntu虚拟机中的位置:/usr/local/spark-2.3.0-bin-hadoop2.7/conf/log4j.properties(这个是我在做spark实验的时候使用的路径,这样看来不同的环境log4j的位置还不一样嘞……)

    注:写这篇总结时候的背景是我在做spark的实验,在Ubuntu系统的IDEA中创建了一个工程,然后在其中创建了一个Object对象,在Object对象中进行编程实验。

    二、log4j.properties的修改

    推荐一篇极好的博客:Spark log4j 日志配置详解

    三、遇到的问题

    在更改log4j.properties文件后,运行程序,发现日志依然从控制台输出,自己指定的log文件中并没有任何变化。

    解决方法:

    上网查阅了很多资料,发现导致这种问题出现的原因是:

    程序在执行时引用了其他的jar包,引用的jar包中可能包含了其他log4j相关的配置文件。由于log4j配置文件的引用存在优先级,因此程序没有使用我们之前更改的log4j.properties文件,而是使用了jar包中的配置文件,导致更改没有奏效。

    解决方法:

    方法一:在程序中通过加入代码,直接指定使用的log4j.properties文件:

    首先导入相关的包:

    import org.apache.log4j.PropertyConfigurator

    然后在主函数中添加语句:

    PropertyConfigurator.configure("/usr/local/spark-2.3.0-bin-hadoop2.7/conf/log4j.properties")

     注:引号中为想要指定使用的log4j.properties的绝对路径(这里画重点)

    方法二:

    log4j日志文件的使用及log4j日志文件失效原因分析

    解决log4j2配置文件失效的问题

    博文里就是大致解决思路

    四、其他收获

    1、maven工程?

    2、log4j.properties引用还存在优先级?!而且据说还不确定,所以网上多数网友推荐上面记录的方法中的方法一。

     

    本次解决问题所浏览过的博客:

    关于SLF4J结合Log4j使用时日志输出与指定的log4j.properties不同

    log4j.properties文件自动加载

    解决log4j.properties不起作用的问题

    log4j.properties文件的配置不起作用

    在项目的classPath 下配置log4j.xml ,为什么没有读取log4j的配置文件它会自己找到

    【Maven】maven的pom文件的位置

    [Log4j] Log4j 的配置和配置文件加载顺序

    自定义log4j.properties的加载位置

    scala读取jar包外配置文件的方式

    log4j 笔记之PropertyConfigurator

    log4j的使用与java中properties配置文件加载

    log4j日志优先级问题和自定义优先级

    最新回复(0)