关于在nginx负载均衡下,项目共用log4j配置导致的日志混乱问题
来源:互联网 发布:网络歌手戴丽丽的经历 编辑:程序博客网 时间:2024/06/17 05:03
自定义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)
效果:
阅读全文
0 0
- 关于在nginx负载均衡下,项目共用log4j配置导致的日志混乱问题
- 玩玩负载均衡---在window与linux下配置nginx
- 转帖---负载均衡---在window与linux下配置nginx
- 玩玩负载均衡---在window与linux下配置nginx
- 玩玩负载均衡---在window与linux下配置nginx
- 玩玩负载均衡---在window与linux下配置nginx
- 玩玩负载均衡---在window与linux下配置nginx
- 玩玩负载均衡---在window与linux下配置nginx
- nginx 负载均衡的配置
- Nginx负载均衡的配置
- 【原创】Nginx在Windows环境下的反向代理与负载均衡的配置与验证
- nginx在CentOS虚机环境下的安装配置,实现3台虚机负载均衡
- nginx在CentOS虚机环境下的安装配置,实现3台虚机负载均衡
- 使用nginx来负载均衡 本文在window与linux下配置nginx实现负载
- windows下tomcat和nginx负载均衡的简单配置!
- 关于Nginx负载均衡和共享session的问题
- Nginx负载均衡在windows上的配置
- Nginx--负载均衡在项目中的应用
- java定时任务小例子
- RabbitMq(二)
- TCP分析和详解
- Matplotlib中的scatter函数
- ImportError DLL load failed: %1 不是有效的 Win32 应用程序
- 关于在nginx负载均衡下,项目共用log4j配置导致的日志混乱问题
- 小米5 Google服务框架安装
- 两重数组排序问题
- eclipse打jar包时也将依赖的jar包打到一起的解决办法
- 盘点各专业到古代都能干些啥
- Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf —— DP
- Linux下常用系统分析工具总结
- 将oracle的数据导入到mysql的四种方法
- 我理解的虚拟DOM