slf4j 和 log4j合用的(Maven)配置(转)

 

简述:
添加logger的日志输出,下面是配置信息供备忘

步骤:
1. 在Maven的porn.xml 文件中添加dependency如下

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.2</version>
        </dependency>

之后就会添加三个包,

2. 之后在项目下添加log4j.properties
项目路径如下:

log4j.properties

#config root logger
log4j.rootLogger = INFO,system.out
log4j.appender.system.out=org.apache.log4j.ConsoleAppender
log4j.appender.system.out.layout=org.apache.log4j.PatternLayout
log4j.appender.system.out.layout.ConversionPattern=MINAServer Logger-->%5p{%F:%L}-%m%n

#config this Project.file logger
log4j.logger.thisProject.file=INFO,thisProject.file.out
log4j.appender.thisProject.file.out=org.apache.log4j.DailyRollingFileAppender
log4j.appender.thisProject.file.out.File=logContentFile.log
log4j.appender.thisProject.file.out.layout=org.apache.log4j.PatternLayout

3. 在代码中添加

import java.text.SimpleDateFormat;
import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LoggerTest {

    private static final Logger logger=LoggerFactory.getLogger(LoggerTest.class);
    public static void main(String[] args) {
        logger.info("Now:{}",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    }

}
输出:
2014-12-09 09:18:09,480 INFO [LoggerTest][main] Now:2014-12-09 09:18:09

如果要输出logger文件:

log4j.rootLogger=INFO,R,stdout  

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=Logger-->%5p{%F:%L}-%m%n 

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=../logs/log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=Logger-->%5p{%F:%L}-%m%n 

下面是log4j.properties的配置信息,在此要感谢前辈提供的资源

#输出格式
#%m 输出代码中指定的消息
#%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
#%r 输出自应用启动到输出该log信息耗费的毫秒数
#%c 输出所属的类目,通常就是所在类的全名
#%t 输出产生该日志事件的线程名
#%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
#%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
#%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

格式化例子:
log4j.appender.thisProject.file.out.layout.ConversionPattern=log4j-->%d{yyyy MMM dd HH:mm:ss,SSS}%5p{%F\:%L}-%m%n

注意:

1.信息格式化的小知识
这些参数中间可能会参杂一些数字比如:%5p它的意思就是在输出此参数之前加入多少个空格,还有就是里面的“\”的作用是转义字符

2.log4j.properties文件放置位置
(1)在java project项目中,它放置的位置是在项目的根目录下而不是在项目的src目录下。
(2)在javaweb项目中它放置的位置是在src目录下,因为这个时候tomcat会去默认的加载它的,不需要我们去手动的加载log4j的配置文件,只需要根据配置获取自己需要的logger实例即可,由此我们可以知道如果我们使用的不是tomcat容器的话,是不是需要自己手动加载或者至少要配置一下呢?比如使用Websphere等非apache服务器。

3.对于java web项目里面的日志的位置配置
(1)如果是要指定日志文件的位置为D盘下的log.txt文件。
log4j.appender.thisProject.file.out.File=d:\\log.txt
(2)如果指定日志文件的位置为当前的tomcat的工作目录下的某个文件
log4j.appender.thisProject.file.out.File=${catalina.home}/logs/logs_tomcat.log

4.log4j的加载机制
log4j.properties加载机制?其实log4j.properties只是log4j的配置文件。程序启动时,log4j组件去读log4j.properties,和读取普通配置文件没多大区别。获取用户配置的一些log4j的属性值,调用想应该的方法为log4j属性设置。
把log4j.properties当作一个struts.xml或者一个hibernate-cfg.xml就可以了。但不同的是,log4j不像struts和hibernate,它不是一个独立的组件,没法自己完成初始化,一般都是什么组件需要它 就去初始化。比如,hibernate默认的日志组件就是log4j,在hibernate初始化的时候它会去初始化log4j。如果你没配置log4j.properties,hibernate会抛出异常,但还是可以正常初始化。

 http://blog.csdn.net/anialy/article/details/8529188
http://www.cnblogs.com/softidea/p/4152397.html

Why do I see a warning about "No appenders found for logger" and "Please configure log4j properly"?
This occurs when the default configuration files log4j.properties and log4j.xml can not be found and the application performs no explicit configuration.
log4j uses Thread.getContextClassLoader().getResource() to locate the default configuration files and does not directly check the file system.
Knowing the appropriate location to place log4j.properties or log4j.xml requires understanding the search strategy of the class loader in use.
log4j does not provide a default configuration since output to the console or to the file system may be prohibited in some environments.

Also see FAQ: Why can't log4j find my properties in a J2EE or WAR application?.

http://logging.apache.org/log4j/1.2/faq.html#a3.5

时间: 2024-12-31 12:17:18

slf4j 和 log4j合用的(Maven)配置(转)的相关文章

maven配置的ssh在Action测试时候,java找不到符号

问题描述 maven配置的ssh在Action测试时候,java找不到符号 解决方案

maven配置详解

什么是pom?    pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素. pom.xml 配置文件 [html] view plaincopyprint? <project>       <parent>           ...       </parent>              <

如何将maven配置成引用外部jar包,就是打成war包时不将jar打进去,而是引用外部地址

问题描述 如何将maven配置成引用外部jar包,就是打成war包时不将jar打进去,而是引用外部地址 打jar包已经解决了,如下: <configuration> <archive> <manifest> <mainClass>com.zb.app.MemberAppMain</mainClass> <addClasspath>true</addClasspath> <classpathPrefix>lib/

maven 配置: 修改默认的 .m2仓库 默认存储路径.

一 .在系统maven里修改 1.在maven_HOME/conf/下找到配置文档 settings.xml 在文档中添加如下的配置说明 <localRepository>/home/morpheus/.m2/repository</localRepository> 例如 settings.xml : .... <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="

slf4j与log4j 配置文件 写法是否一样

问题描述 slf4j与log4j 配置文件 写法是否一样 网上找了很多关于 slf4j配置文件,都是说与log4j的一样, log4.properties #log4j.rootLogger = [ level ] , appenderName, appenderName, ... log4j.debug=true log4j.rootLogger = INFO, console, R #level=INFO,all can be output #console is set to be a C

SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置

一直对springmvc和mybatis挺怀念的,最近想自己再搭建下框架,然后写点什么. 暂时没有整合缓存,druid也没有做ip地址的过滤.Spring的AOP简单配置了下,也还没具体弄,不知道能不能用,log也不知道能不能用,`(*∩_∩*)′哈哈,有点不负责任...... 2014-08-12 23:45补: =================开始================= 1.增加quartz :http://www.cnblogs.com/acehalo/p/3902731.h

【HIBERNATE框架开发之三】搭建HIBERNATE日志(SLF4J转LOG4J)环境并搭建JUNIT单元测试环境!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/hibernate/806.html 由于最新写cocos2dx动作编辑器的解析和框架所以没更新,那么从今天开始继续来学习Hibernate,那么接着第二篇文章讲解,那么首先copy,第二篇的第一个Annotation的项目改个名字"LogForHibernate":           首先搭建log4j环境: 第一步我们之前设置

关于Log4j比较全面的配置

比较 LOG4J的配置之简单使它遍及于越来越多的应用中了:Log4J配置文件实现了输出到控制台.文件.回滚文件.发送日志邮件.输出到数据库日志表.自定义标签等全套功能.择其一二使用就够用了, log4j.rootLogger=DEBUG,CONSOLE,A1,im log4j.addivity.org.apache=true # 应用于控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.Thresh

maven配置篇之settings.xml

maven2 比起maven1 来说,需要配置的文件少多了,主要集中在pom.xml和settings.xml中. 先来说说settings.xml,settings.xml对于maven来说相当于全局性的配置,用于所有的项目.在maven2中存在两个settings.xml,一个位于maven2的安装目录conf下面,作为全局性配置.对于团队设置,保持一致的定义是关键,所以maven2/conf下面的settings.xml就作为团队共同的配置文件.保证所有的团队成员都拥有相同的配置.当然对于