思路方法
![](/icons/60788yi.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
其中“${WORKDIR}/”是个变量
![](/icons/60788dou.gif)
![](/icons/60788System.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788dou2.gif)
![](/icons/60788dou.gif)
![](/icons/60788dou.gif)
![](/icons/60788System.gif)
![](/icons/60788set.gif)
![](/icons/60788dou.gif)
![](/icons/60788yi.gif)
![](/icons/60788chushi.gif)
![](/icons/60788de.gif)
![](/icons/60788dou2.gif)
思路方法 2、可以使用服务器环境变量
log4j
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/logs_tomcat.log
log4j.appender.R.MaxFileSize=10KB
其中
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
![](/icons/60788dou2.gif)
![](/icons/60788dou.gif)
![](/icons/60788diaoyong.gif)
![](/icons/60788dou2.gif)
![](/icons/60788dou.gif)
![](/icons/60788yi.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
思路方法 3、通过servlet
![](/icons/60788chushi.gif)
![](/icons/60788kh.gif)
具体实现:做
![](/icons/60788yi.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788yi.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788chushi.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788yi.gif)
![](/icons/60788yi.gif)
(1).在项目启动时,装入
![](/icons/60788chushi.gif)
public
![](/icons/60788class.gif)
![](/icons/60788static.gif)
![](/icons/60788class.gif)
publicLog4jInit
![](/icons/60788kh.gif)
}
publicvoidinit(ServletConfigconfig)throwsServletException{
Stringprefix=config.getServletContext
![](/icons/60788kh.gif)
Stringfile=config.getInitParameter(\"log4j\");
StringfilePath=prefix+file;
Propertiesprops=
![](/icons/60788new.gif)
![](/icons/60788kh.gif)
try{
FileInputStreamistream=
![](/icons/60788new.gif)
props.load(istream);
istream.close
![](/icons/60788kh.gif)
//toPr
![](/icons/60788int.gif)
StringlogFile=prefix+props.getProperty(\"log4j.appender.file.File\");//设置路径
props.
![](/icons/60788set.gif)
PropertyConfigurator.configure(props);//装入log4j配置信息
}catch(IOExceptione){
toPr
![](/icons/60788int.gif)
toPr
![](/icons/60788int.gif)
![](/icons/60788return.gif)
}
}
public
![](/icons/60788static.gif)
![](/icons/60788int.gif)
![](/icons/60788System.gif)
![](/icons/60788int.gif)
}
}
实际上log4j
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
![](/icons/60788class.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788yi.gif)
![](/icons/60788class.gif)
![](/icons/60788dou2.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788dou.gif)
(2).Web.xml中
![](/icons/60788de.gif)
<servlet>
<servlet-name>log4j-init</servlet-name>
<servlet-
![](/icons/60788class.gif)
![](/icons/60788class.gif)
<init-param>
<param-name>log4j</param-name>
<param-value>WEB-INF/
![](/icons/60788class.gif)
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
注意:上面
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788dou2.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788dou2.gif)
![](/icons/60788dou.gif)
![](/icons/60788dou2.gif)
(3).log4j.properties中即可配置log4j.appender.file.File为当前应用
![](/icons/60788de.gif)
以上是网上log4j日志文件
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
思路方法
![](/icons/60788yi.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
![](/icons/60788dou2.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788yi.gif)
![](/icons/60788set.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
![](/icons/60788diaoyong.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
置文件中
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
![](/icons/60788dou2.gif)
![](/icons/60788de.gif)
目录
![](/icons/60788de.gif)
![](/icons/60788dou2.gif)
思路方法 2是利用服务器vm中已经存在
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
![](/icons/60788dou2.gif)
![](/icons/60788dou2.gif)
思路方法 3是扩展ActionServlet类
![](/icons/60788dou.gif)
![](/icons/60788kh.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788dou2.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788dou2.gif)
细代码如下:
![](/icons/60788chengxu.gif)
packagewbb.bysxxglxt.util;
importorg.apache.struts.action.*;
importorg.apache.commons.logging.LogFactory;
importorg.apache.commons.logging.Log;
importjavax.servlet.ServletException;
importjava.util.Properties;
importjava.io.InputStream;
importorg.apache.log4j.PropertyConfigurator;
importjava.io.FileInputStream;
importjava.io.IOException;
public
![](/icons/60788class.gif)
privateLoglog=LogFactory.getLog(this.getClass
![](/icons/60788kh.gif)
![](/icons/60788kh.gif)
publicExtendedActionServlet
![](/icons/60788kh.gif)
publicvoidinit
![](/icons/60788kh.gif)
log.info(
\"Initializing,MyMyActionServletinitthis
![](/icons/60788System.gif)
Stringprefix=this.getServletConfig
![](/icons/60788kh.gif)
![](/icons/60788kh.gif)
\"/\");
Stringfile=this.getServletConfig
![](/icons/60788kh.gif)
StringfilePath=prefix+file;
Propertiesprops=
![](/icons/60788new.gif)
![](/icons/60788kh.gif)
![](/icons/60788System.gif)
![](/icons/60788int.gif)
![](/icons/60788System.gif)
![](/icons/60788int.gif)
![](/icons/60788System.gif)
![](/icons/60788int.gif)
try{
FileInputStreamlog4jStream=
![](/icons/60788new.gif)
props.load(log4jStream);
log4jStream.close
![](/icons/60788kh.gif)
StringlogFile=prefix+
props.getProperty(\"log4j.appender.A1.File\");//设置路径
![](/icons/60788System.gif)
![](/icons/60788int.gif)
props.
![](/icons/60788set.gif)
PropertyConfigurator.configure(props);//装入log4j配置信息
}catch(IOExceptione){
e.pr
![](/icons/60788int.gif)
![](/icons/60788kh.gif)
}
log.info(\"Initializing,endMyInit\");
super.init
![](/icons/60788kh.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
}
}
**********************应用web.xml关键部分***************************
![](/icons/60788chengxu.gif)
<servlet>
<servlet-name>action</servlet-name>
<servlet-
![](/icons/60788class.gif)
![](/icons/60788class.gif)
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>log4j</param-name>
<param-value>properties\\log4j.properties</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param> [Page]
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
注意log4j参数中相对路径
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788class.gif)
![](/icons/60788dou.gif)
![](/icons/60788yinwei.gif)
![](/icons/60788dou.gif)
![](/icons/60788class.gif)
![](/icons/60788dou.gif)
![](/icons/60788dou2.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
log4j:ERROR
![](/icons/60788set.gif)
java.io.FileNotFoundException:WEB-INF\\logs\\bysxxglxt.log(系统找不到指定
![](/icons/60788de.gif)
![](/icons/60788dou2.gif)
不知道log4j为什么会这么早自动启动
![](/icons/60788dou2.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788dou.gif)
![](/icons/60788dou.gif)
log4j:WARNNoappenderscouldbefoundforlogger(org.apache.commons.digester.Digester.sax).
log4j:WARNPleaseinitializethelog4jsystemproperly.
这样做就算是掩耳盗铃了
![](/icons/60788dou.gif)
![](/icons/60788de.gif)
![](/icons/60788dou.gif)
![](/icons/60788dou.gif)
![](/icons/60788yi.gif)
![](/icons/60788dou2.gif)
********************log4j.properties*****************************
###设置logger级别###
![](/icons/60788chengxu.gif)
log4j.rootLogger=DEBUG,stdout,A1
###appender.stdout输出到控制台###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=
![](/icons/60788System.gif)
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%5p][BYSXXGLXT]%d{yyyy-MM-ddHH:mm:ss}:%-4r[%-5p][%t](%F,%L)-%m%n
###appender.A1输出到日志文件###
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender [Page]
log4j.appender.A1.File=WEB-INF\\\\logs\\\\bysxxglxt.log
##注意上面日志文件相对应用根目录路径
![](/icons/60788de.gif)
log4j.appender.A1.DatePattern=’.’yyyy-MM-dd’.log’
log4j.appender.A1.Append=true
##输出DEBUG级别以上
![](/icons/60788de.gif)
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%5p][BYSXXGLXT]%d{yyyy-MM-ddHH:mm:ss}:%-4r[%t](%F,%L)-%m%n
最新评论