今天下午有点累,所以把以往工作中遇到的问题和自己解决的方法和大家共享一下
日志是每个工程必不可少的部分,而log4j大家也用的很熟了,有将调试信息打到控制台的,有的保存文件或数据库
在这里我给给大家讲一个log4j的用法,是在bs中如何加载到log4j的文件,并将调试信息记录下来
首先写好log4j文件
如下(比较简单),这是配置成每日递增的日志
log4j.rootLogger = error, dailyFile
log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.File=dailyRollingFile.log
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.ConversionPattern=%d (%c:%L)--%m%n
然后在web.xml中定义一个servlet
这里有2个参数,一个是log4j,这个参数是定义了log4j的位置
另外一个参数outputDir,这里是定义输出的日志目录(不用预先建立,会自动建立)
<servlet></servlet>
xml 代码
- <servlet>
-
<servlet-name>SystemStartUp</servlet-name>
-
<servlet-class>
- com.cnc.proud.servlet.SystemStartUp
-
</servlet-class>
-
<init-param>
-
<param-name>log4j</param-name>
-
<param-value>WEB-INF\classes\log4j.properties</param-value>
-
</init-param>
-
<init-param>
-
<param-name>outputDir</param-name>
-
<param-value>logs</param-value>
-
</init-param>
-
<load-on-startup>2</load-on-startup>
-
</servlet>
然后看看这个servlet,首先取得web.xml中的2个参数,并读取相应的配置信息,然后用PropertyConfigurator这个类加载
java 代码
- package proud.servlet;
-
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.util.Properties;
-
- import javax.servlet.ServletConfig;
- import javax.servlet.ServletContext;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
-
- import org.apache.log4j.PropertyConfigurator;
-
- import com.cnc.proud.util.ServiceFactory;
-
-
-
-
-
-
- public class SystemStartUp extends HttpServlet {
-
-
private static final long serialVersionUID = 8421025842405267201L;
-
-
public void init(ServletConfig config) throws ServletException {
-
super.init(config);
- ServiceFactory.init();
-
String prefix = config.getServletContext().getRealPath("/");
-
String file = config.getInitParameter("log4j");
- String filePath = prefix + file;
-
String outputDir = config.getInitParameter("outputDir");
-
-
Properties props = new Properties();
-
try {
-
FileInputStream istream = new FileInputStream(filePath);
- props.load(istream);
- istream.close();
-
String logFile = prefix + outputDir + "\\"
- + props.getProperty("log4j.appender.dailyFile.File");
- props.setProperty("log4j.appender.dailyFile.File", logFile);
- PropertyConfigurator.configure(props);
- System.out.println("启动日志成功!");
- } catch (IOException e) {
- System.out.println("启动日志失败!");
- }
- }
- }
-
这个只是在发布工程的时候适用,调试程序的时候建议还是用console方式
并且记得在发布工程的时候把输出级别调高点,如error