本人小站点:   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/  欢迎大家訪问

java webproject中logback换配置文件的路径的更多相关文章

  1. 关于Java Webproject中web.xml文件

    提及Java Webproject中web.xml文件无人不知,无人不识,呵呵呵:系统首页.servlet.filter.listener和设置session过期时限.张口就来,但是你见过该文件里的e ...

  2. 转载:java程序打包成jar 配置文件信息路径

    一个普通的java project,里面引用了config.properties配置文件,将项目打成Runnable jar,然后将config.properties放到打包后的jar路径下,执行该j ...

  3. java程序打包成jar 配置文件信息路径

    一个普通的java project,里面引用了config.properties配置文件,将项目打成Runnable jar,然后将config.properties放到打包后的jar路径下,执行该j ...

  4. Java工程中如何读取配置文件中参数信息

    Java中读取配置文件中参数: 方法一:通过JDK中Properties来实现对配置文件的读取. Properties主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很 ...

  5. 在java web中获取该项目的根路径

    在jsp页面中: <% String path = application.getRealPath("").replace("\\","\\\\ ...

  6. STS中logback.xml配置文件

    <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false ...

  7. java(JSP)中几种获取项目路径方式

    在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getPro ...

  8. 如何在java类中读取Properties配置文件

    在com.example包下有一个test.properties文件和测试类PropertyReadTest.java. test.properties 文件内容: author=zeige  tea ...

  9. 在web.xml中配置spring配置文件的路径

    <context-param>     <param-name>contextConfigLocation</param-name>     <param-v ...

随机推荐

  1. Nuxt开发经验分享

    Nuxt开发经验分享 本文章基于starter-template模板进行讲解,面向有vue-cli开发经验的宝宝 vue init nuxt-community/starter-template   ...

  2. tortoiseGit怎么记住密码

    tortoiseGit每次pull和push的时候都要输入git密码很是麻烦,下面是tortoiseGit记住密码的步骤 首先在你的项目界面右键 选择setting,这个步骤知识看一下你的名称和ema ...

  3. 笔试中java的输入输出

    一,输入 import java.util.*; import java.io.*; public class Main { public static void main(String[] args ...

  4. Springboot2本地锁实践

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交…. 下面我们利用 ...

  5. 怎样更好的深入学习andorid

    把主要的控件  基本布局 基本组件  数据存储都熟悉一边,在看网络的时候,有点不知道怎么搞了.由于一直用c开发,但接触socket也不多,这两天把java的socket编程熟悉了下.找了非常多书,可是 ...

  6. java结合jQuery.ajax实现左右菜单联动刷新列表内容

    http://域名/一级菜单ID-二级菜单ID/ 用这种URL请求页面,出现如图所看到的内容: 该页面包括四部分,顶部文件夹+左側菜单+右側菜单+右下側数据列表. 左側菜单包括一级菜单和二级菜单,点击 ...

  7. [SICP] 求值规则

    在Java语言学习中,通常不太关注求值规则. (2+4*6)*(3+5+7)这样的组合式的求值规则.通常归结为优先级问题: if.for等的求值规则通常归结为语义. 函数式编程语言的Scheme,将这 ...

  8. bzoj2150: 部落战争(匈牙利)

    2150: 部落战争 题目:传送门 题解: 辣鸡数据..毁我AC率 先说做法,很容易就可以看出是二分图匹配的最小路径覆盖(可能是之前不久刚做过类似的题) 一开始还傻逼逼的去直接连边然后准备跑floyd ...

  9. HTML5学习笔记(二):用于构建页面的语义元素

    1.语义元素 大多数HTML5语义元素的用途是标识页面中的一个内容区块,为标注的内容赋予额外的含义,不真正做任何事. 2.使用语义元素的原因 容易修改和维护: 无障碍性(现代Web设计的一个重要主题) ...

  10. HTML5学习笔记(一):HTML5基本概念

    1.HTML的发展历程 HTML(1994年,W3C成立) HTML2(1995年) HTML3(1996年) HTML4.0(1997年) HTML4.01(1999年)——HTML5(2008年: ...