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

一、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日志优先级问题和自定义优先级

你可能感兴趣的:(Spark学习)