一、是什么
简单说就是一个日志的配置文件,其中包含了与日志相关的各种配置信息,修改的话需要管理员权限。
在我的Ubuntu虚拟机中的位置:/usr/local/spark-2.3.0-bin-hadoop2.7/conf/(这个是我在做spark实验的时候使用的路径,这样看来不同的环境log4j的位置还不一样嘞……)
注:写这篇总结时候的背景是我在做spark的实验,在Ubuntu系统的IDEA中创建了一个工程,然后在其中创建了一个Object对象,在Object对象中进行编程实验。
二、的修改
推荐一篇极好的博客:Spark log4j 日志配置详解
三、遇到的问题
在更改文件后,运行程序,发现日志依然从控制台输出,自己指定的log文件中并没有任何变化。
解决方法:
上网查阅了很多资料,发现导致这种问题出现的原因是:
程序在执行时引用了其他的jar包,引用的jar包中可能包含了其他log4j相关的配置文件。由于log4j配置文件的引用存在优先级,因此程序没有使用我们之前更改的文件,而是使用了jar包中的配置文件,导致更改没有奏效。
解决方法:
方法一:在程序中通过加入代码,直接指定使用的文件:
首先导入相关的包:
import .
然后在主函数中添加语句:
("/usr/local/spark-2.3.0-bin-hadoop2.7/conf/")
注:引号中为想要指定使用的的绝对路径(这里画重点)
方法二:
log4j日志文件的使用及log4j日志文件失效原因分析
解决log4j2配置文件失效的问题
博文里就是大致解决思路
四、其他收获
1、maven工程?
2、引用还存在优先级?!而且据说还不确定,所以网上多数网友推荐上面记录的方法中的方法一。
本次解决问题所浏览过的博客:
关于SLF4J结合Log4j使用时日志输出与指定的不同
文件自动加载
解决不起作用的问题
文件的配置不起作用
在项目的classPath 下配置 ,为什么没有读取log4j的配置文件它会自己找到
【Maven】maven的pom文件的位置
[Log4j] Log4j 的配置和配置文件加载顺序
自定义的加载位置
scala读取jar包外配置文件的方式
log4j 笔记之PropertyConfigurator
log4j的使用与java中properties配置文件加载
log4j日志优先级问题和自定义优先级