java web工程中logback换配置文件的路径

原创 2015年07月07日 17:58:08

本人小网站:   http://51kxd.com/  欢迎大家不开心的时候访问访问,调节一下心情


web.xml中配置:


<!-- windows  logback.xml文件跟web容器(比如tomcat)在同一个目录中。linux随意  -->
<context-param>
<param-name>logbackConfigLocation</param-name>
<param-value>file:/datum/Data/conf/config/logback.xml</param-value>
</context-param>


<!-- logback.xml随意放  -->
<context-param>
<param-name>logbackConfigLocation</param-name>
<param-value>file:E:\\datum\\data\\conf\\logback.xml</param-value>
</context-param>


其中file:一定要有。


<listener>
<listener-class>com.cxfmvcstu.comn.LogbackConfigListener</listener-class>
</listener>

LogbackConfigListener为自己的实现类

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.UrlResource;

import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.joran.JoranConfigurator;
import ch.qos.logback.core.joran.spi.JoranException;


/**
 * @description 
 * @path com.cxfmvcstu.comn.LogbackConfigListener
 * @author lijun.justin
 * @time 2015年6月27日 下午8:13:19
 */
public class LogbackConfigListener implements ServletContextListener {
	private static final Logger logger = LoggerFactory.getLogger(LogbackConfigListener.class);

	private static final String CONFIG_LOCATION = "logbackConfigLocation";

	@Override
	public void contextInitialized(ServletContextEvent event) {
		// 从web.xml中加载指定文件名的日志配置文件
		String logbackConfigLocation = event.getServletContext().getInitParameter(CONFIG_LOCATION);
		String fn = event.getServletContext().getRealPath(logbackConfigLocation);
		try {
			UrlResource urlResource = new UrlResource(logbackConfigLocation);
			LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
			loggerContext.reset();
			JoranConfigurator joranConfigurator = new JoranConfigurator();
			joranConfigurator.setContext(loggerContext);
			//joranConfigurator.doConfigure(fn);
			joranConfigurator.doConfigure(urlResource.getFile().getAbsolutePath());
			logger.debug("loaded slf4j configure file from {}", fn);
		} catch (JoranException e) {
			logger.error("can loading slf4j configure file from " + fn, e);
		}catch (Exception e) {
			logger.error(e.getMessage(), e);
		}

	}

	@Override
	public void contextDestroyed(ServletContextEvent event) {
	}
}

要依赖于spring的UrlResource类。里面无用的代码,读者自己精简一下


logback.xml的配置示例:


<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">   
<!-- 控制台输出 -->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
</encoder>
</appender>


<!-- 时间滚动输出 level为 INFO 日志 -->
<appender name="file—INFO"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY </onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>D:/logs/INFO.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
</encoder>
</appender>


<!-- 时间滚动输出 level为 ERROR 日志 -->
<appender name="file—error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY </onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>D:/logs/error.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
</encoder>
</appender>


<!-- 特定过滤含有某字符串的日志   需要额外的两个JAR包,commons-compiler.jar和janino.jar
<appender name="file-str" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<level>ERROR</level>
<evaluator>
<expression>message.contains("str")</expression>
</evaluator>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>D:/logs/contains.%d{yyyy-MM-dd}.log
</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
</encoder>
</appender>  -->


<!-- 数据库输出 
<appender name="db" class="ch.qos.logback.classic.db.DBAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<level>ERROR</level>
<evaluator>
<expression>message.contains("str")</expression>
</evaluator>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<connectionSource
class="ch.qos.logback.core.db.DriverManagerConnectionSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://host_name:3306/datebase_name</url>
<user>username</user>
<password>password</password>
</connectionSource>
</appender> -->


<root level="INFO">
<appender-ref ref="stdout" />
<appender-ref ref="file—INFO" />
<appender-ref ref="file—error" />
<appender-ref ref="file-str" />
<appender-ref ref="db" />
</root>


</configuration> 



本人小网站:   http://51kxd.com/  欢迎大家访问

相关文章推荐

如何加载指定路径的Logback.xml

如何加载指定路径的Logback.xml今天想外置logback.xml,谢了如下代码 File logbackFile = new File("./conf/logback.xml"); ...

勿在 LogBack 的配置中使用相对路径

请看下面这段配置,这是无法工作的: JTheque logs/jtheque.log logs/jth...

日志组件logback的介绍及配置使用方法

转载于:http://sunney2010.iteye.com/blog/1404729   一、logback的介绍      Logback是由log4j创始人设计的又一个开源日志组件。lo...
  • zgmzyr
  • zgmzyr
  • 2012年12月06日 21:22
  • 63938

Java Web中使用logback输出日志文件的路径问题

一个软件的日志有多重要,相信当软件出问题,你一行一行去找的时候才会意识到,Clean code, clean logs中提出了10个建议来有效的使用日志。从我自己的经验上来看,从根本不会考虑日志问题,...

logback 日志级别不可控问题解决

1、问题 在使用slf4j+log4j时,发现输出的日志总是在DEBUG级别,而且格式非logback.xml中给出的格式。 logback.xml内容如下: HE...

Java深入 - logback的配置和使用

转自:http://blog.csdn.net/initphp/article/details/40891821 1. logback介绍 Logback是由log4j创始人设计的又一...

logback 配置详解(一)

一:根节点包含的属性:   scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod: 设置监测配置文件是否有...
  • haidage
  • haidage
  • 2011年09月20日 17:20
  • 181344

为web项目添加logback

在项目进行的过程中,难免要涉及到日志查看和打印,所以学习了logback的使用和配置方法,在这里记录下,和大家分享 1.jar包 上面的两个包是必须要使用的,注意不要重复加载了,不然会找不...

LogBack配置使用全攻略

因为,笔者所在公司启动新项目,原先使用的log4j笔者从来没关注过,实在是嫌麻烦,于是,自己琢磨了一天logback,算是成功了。特地来分享一下。logback需要这么几个jar包 建议jar包可以...

用ant执行时报错“要了解详细信息,请使用-xlint:unchecked重新编译”的解决方案

来自:http://flysky.iteye.com/blog/49542 一、遇到问题: 用ant执行jasperreport的samples\charts示例的build.xml时,无...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java web工程中logback换配置文件的路径
举报原因:
原因补充:

(最多只允许输入30个字)