log4j日志输出到web项目指定文件夹
尝试将log4j的文件日志输出到web工程制定目录,遇到了很多问题,最终搞定,下面是记录。
其原理在于log4j的配置文件支持服务器的vm的环境变量,如${oss.log4j.path},在log4j加载配置文件之前,先用System.setProperty("", "")设置好日志文件路径,这一操作通过一个初始的servlet来实现
1. log4j.properties文件
log4j.rootCategory=debug,stdout,ROLLFILE,R
log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) -%m%n
log4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.layout.ConversionPattern=%p %t %c -%m%n
log4j.appender.R.File=${oss.log4j.path}logs/log.loglog4j.appender.R.MaxFileSize=100KBlog4j.appender.R.MaxBackupIndex=1
log4j.appender.ROLLFILE = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.ROLLFILE.File = ${oss.log4j.path}logs/log.htmllog4j.appender.ROLLFILE.Append = truelog4j.appender.ROLLFILE.Threshold = DEBUGlog4j.appender.ROLLFILE.layout = org.apache.log4j.HTMLLayout
2. servlet。配置web服务器的vm环境变量
package com.jesse.onlineshop.servlet;
import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;
import org.apache.log4j.Logger;
/** * 将配置信息读入系统变量 * @author Administrator * */public class SystemServlet extends HttpServlet {
private static final Logger logger = Logger.getLogger(SystemServlet.class);
private static final long serialVersionUID = -833322220864312415L;
@Override public void init() throws ServletException { String rootPath = this.getServletContext().getRealPath("/");
logger.info(rootPath);
String log4jPath = this.getServletConfig().getInitParameter("oss.log4j.path"); //若没有指定oss.log4j.path初始参数,则使用WEB的工程目录 log4jPath = (log4jPath==null||"".equals(log4jPath))?rootPath:log4jPath; System.setProperty("oss.log4j.path", log4jPath); super.init(); }
}
3. web.xml. 不需要配置servlet-mapping,load-on-startup设置为0,会在web容器启动时候就装入该servlet
<servlet> <servlet-name>systemServlet</servlet-name> <servlet-class>com.jesse.onlineshop.servlet.SystemServlet</servlet-class> <init-param> <param-name>oss.log4j.path</param-name> <param-value></param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet>
4. 结果
[img]http://dl.iteye.com/upload/picture/pic/127897/55f9a757-f22f-32fe-a61d-aaa0f261173a.png[/img]
5. 疑惑
在log4j.properties配置文件中,日志文件路径需要配置成${oss.log4j.path}logs/log.html
在配制成${oss.log4j.path}/logs/log.html时不能输出,但是通过输出System.getProperty("oss.log4j.path")时输出的路径并不包含"/"。所以不理解为什么最终会在这里加上一个"/"的。
log4j日志输出到web项目指定文件夹相关推荐
- 关于idea中新建web项目 webapp文件夹没有小蓝点 ,启动服务,访问不到解决方案
关于idea中新建web项目 webapp文件夹没有小蓝点 ,启动服务,访问不到解决方案 参考文章: (1)关于idea中新建web项目 webapp文件夹没有小蓝点 ,启动服务,访问不到解决方案 ( ...
- web项目各个文件夹的作用
拿到服务器权限后,在做本地信息收集时,web应用是一个不可忽视的内容,尤其是web配置文件内容,能为我们横向移动.扩大战果提供重要情报.所以本文介绍web目录下各个文件夹的作用,为我们翻文件提供指导. ...
- Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题
转载自 Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题 使用Mybatis的时候,有些时候能输出(主要是指sql,参数,结果)日志.有些时候就不能. 无法输出日志的时候,无论 ...
- log4j日志输出性能优化-缓存、异步
1.log4j已成为大型系统必不可少的一部分,log4j可以很方便的帮助我们在程序的任何位置输出所要打印的信息,便于我们对系统在调试阶段和正式运行阶段对问题分析和定位.由于日志级别的不同,对系统的性能 ...
- 错误:无法打开web项目”****“,文件路径“****”与url“**”不符。这两者要映射到相同的服务器位置。...
问题出现的环境: 现在解决方案中有3个项目(2个类库,1个web),因为原来搭建项目的服务器要做别的用,所以要做个项目"迁移". 在现在的服务器上安装完开发环境,拷贝过来项目文件, ...
- web项目图片/文件保存方式
web项目图片/文件保存方式 其实文件和图片都是二进制流文件 以下统称图片 1直接把图片存到数据库字段中 2图片存项目/public/img目录,文件名存数据库字段 3规范的使用阿里云oss/腾讯云c ...
- SpringBoot 项目将文件图片资源上传到本地静态资源文件夹下(指定文件夹下)
1.SpringBoot 项目将文件图片资源上传到本地静态资源文件夹下(指定文件夹下) 最终效果: 前端浏览本地文件,点击上传至本地resources/static/images/imgWall下 2 ...
- 手机ftp服务器进入制定文件夹,ftp服务器 指定文件夹
ftp服务器 指定文件夹 内容精选 换一换 本节介绍使用Data Studio时要遵循的安装和配置步骤,以及配置服务器以调试PL/SQL函数的步骤.本章包含如下几节内容:安装Data Studio配置 ...
- xml遍历文件夹vector_怎么统计指定文件夹下含有.xml格式的文件数目
如何统计指定文件夹下含有.xml格式的文件数目?如题 ------解决思路----------------------Directory.GetFiles(@"路径", " ...
最新文章
- VS2015 win64下配置Opencv3.4.7
- 想开网店?向你推荐最好的开源电子商务平台
- mysql in 原理_深入理解MySql子查询IN的执行和优化
- c++switch实现猜拳_C语言实现人机猜拳游戏,非常适合C++小白练习的项目!
- php实现 字符串加密(分类分布分工,化不可能为可能)
- 高效实用Kafka-Kafka消息处理(底层原理)
- ionic 环境安装
- oracle报错查询动态视图,oracle基表和动态性能视图
- 什么叫做蓝牙技术(转贴)
- csv数据去重 python_数据去重_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...
- Camera成像中的Demosaic
- 不同框架接口自动化的优劣
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
- Axure RP小部件使用教程
- python的自省机制
- Android(小米miui)如何判断当前应用是否允许NFC权限
- 设置大小合适的Win7休眠文件Hiberfil.SYS
- 如何改善睡眠状态?建议你尝试这些方法和好物
- Eva 初学算法笔记 —— 1.直接插入排序
- 调整字体间距属性和文字换行属性