概述
自定义Log4j Appender
在开发-运维时遇到一个这样的问题:
用nginx负载均衡代理了几个项目,每个项目用的log4j的配置文件是一样的。本以为不会有影响,但是在之后运维时,发现打印出来日志不仅漏而且还把时间错位了。然后以为自己写错了什么,网上一搜,找到下面这位博主的文章。
nginx中使用log4j的漏日志问题
上面的博主提供了一种解决方案。这里我写一个自己的~~
1.自定义一个Appender继承DailyRollingFileAppender
2.增加两个属性 filePath 和 logFileName
3.重写activateOptions方法,在方法里面将DailyRollingFileAppender 的fileName 赋值为新路径
package cn.sxk.utils;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.Layout;
public class DailyRollingCatalogAppender extends DailyRollingFileAppender{
private String filePath;
private String logFileName;
private static Properties props = System.getProperties();
private static String difference;
static{
if("Windows 7".equals(props.getProperty("os.name").toString())){
String[] temp = props.getProperty("user.dir").split("\\");
difference = temp[temp.length-2];
}else{
String[] temp = props.getProperty("user.dir").split("/");
difference = temp[temp.length-2];
}
}
public DailyRollingCatalogAppender() {
}
public DailyRollingCatalogAppender(Layout layout, String filePath,String logFileName,
String datePattern) throws IOException {
super(layout, filePath + "/"+ difference + "/" +logFileName, datePattern);
this.filePath = filePath;
this.logFileName = logFileName;
}
@Override
public void activateOptions() {
File target = new File(filePath + "/"+ difference);
if(!target.exists()) {
target.mkdirs();
}
super.fileName=filePath + "/"+ difference + "/" +logFileName;
super.activateOptions();
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String getLogFileName() {
return logFileName;
}
public void setLogFileName(String logFileName) {
this.logFileName = logFileName;
}
}
注:静态块那边内容可以随意修改,但是这是我唯一能想到能动态修改目录的手段了,如果你有更好的方案,还请在评论下不吝赐教。
使用条件:你必须先移动相应的tomcat的bin目录启动tomcat,因为这个静态块获取的是当前的工作目录。
下面是配置文件
1.配置自定义 Appender
2.配置filePath 和 logFileName
3.其他按照DailyRollingFileAppender配置(除了fileName)
效果:
最后
以上就是奋斗台灯为你收集整理的关于在nginx负载均衡下,项目共用log4j配置导致的日志混乱问题的全部内容,希望文章能够帮你解决关于在nginx负载均衡下,项目共用log4j配置导致的日志混乱问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复