spring log4j的log4j是什么时候加载

Spring 日志 Log4J
Spring 日志 Log4J
Windows10用户联盟QQ群:
Spring应用是非常容易使用Log4J里面的功能。下面的例子将带你通过简单的步骤来解释和Spring之间的简单集成。
我假设你已经有你的机器上安装log4J日志,如果你没有,那么你可以从&&下载并简单地提取任意文件夹的压缩文件。我们将使用唯一的log4j-x.y.z.jar在项目中。&
接下来,使用Eclipse IDE,并按照以下步骤使用Spring Web框架开发动态表单的Web应用程序:
Create a project with a name&SpringExample&and create a package&com.yiibai&under the&src&folder in the created project.
Add required Spring libraries using&Add External JARs&option as explained in the&Spring Hello World Example&chapter.
Add log4j library&log4j-x.y.z.jar&as well in your project using using&Add External JARs.
Create Java classes&HelloWorld&and&MainApp&under the&com.yiibai&package.
Create Beans configuration file&Beans.xml&under the&src&folder.
Create log4J configuration file&log4j.properties&under the&src&folder.
The final step is to create the content of all the Java files and Bean Configuration file and run the application as explained below.
这里是HelloWorld.java的文件的内容:
package com.yiibai;
public class HelloWorld {
private String message;
public void setMessage(String message){
this.message
= message;
public void getMessage(){
System.out.println(&Your Message : & + message);
下面是第二个文件MainApp.java的内容:
package com.yiibai;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.log4j.Logger;
public class MainApp {
static Logger log = Logger.getLogger(MainApp.class.getName());
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext(&Beans.xml&);
log.info(&Going to create HelloWord Obj&);
HelloWorld obj = (HelloWorld) context.getBean(&helloWorld&);
obj.getMessage();
log.info(&Exiting the program&);
可以生成,因为我们已经产生信息的消息调试和错误消息类似的方式。现在,让我们来看看 beans.xml 文件的内容:
&?xml version=&1.0& encoding=&UTF-8&?&
xmlns=&http://www.springframework.org/schema/beans&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd&
id=&helloWorld& class=&com.yiibai.HelloWorld&
name=&message& value=&Hello World!&
下面是log4j.properties 文件的内容定义,产生的日志消息所需的 Log4J 的标准规则:
# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
# Set the name of the file
log4j.appender.FILE.File=C:\log.out
# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug
# Set the append to false, overwrite
log4j.appender.FILE.Append=false
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
创建源代码和bean配置文件完成后,让我们运行应用程序。如果您的应用程序一切顺利,这将打印以下信息在Eclipse的控制台:
Your Message : Hello World!
有时,如果查看 C:\ drive,那么应该找到日志文件log.out各种日志消息,内容如下:
&!-- initialization log messages --&
Going to create HelloWord Obj
Returning cached instance of singleton bean 'helloWorld'
Exiting the program
Jakarta Commons记录(JCL)API
另外,您可以使用Jakarta Commons Logging (JCL)&API来在Spring应用程序生成的日志。 JCL可以从下载。我们在技术上需要此软件包的唯一文件是commons-logging-x.y.z.jar文件,该文件需要被放置在classpath类似的方式,已经把&log4j-x.y.z.jar&放入在上面的例子。&
要使用需要一个mons.logging.Log对象的日志记录功能,然后可以调用下面的方法之一根据您的需求:
fatal(Object message)
error(Object message)
warn(Object message)
info(Object message)
debug(Object message)
trace(Object message)
下面是MainApp.java的取代,这使得使用JCL API:
package com.yiibai;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.commons.logging. Log;
import org.apache.commons.logging. LogFactory;
public class MainApp {
static Log log = LogFactory.getLog(MainApp.class.getName());
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext(&Beans.xml&);
log.info(&Going to create HelloWord Obj&);
HelloWorld obj = (HelloWorld) context.getBean(&helloWorld&);
obj.getMessage();
log.info(&Exiting the program&);
你已经确定你包括编译和运行程序之前在项目中共享记录 - xyzjar文件。
现在,保持配置和上面的例子中其它的内容不变,如果编译并运行应用程序会得到类似的结果。
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&&log4j的使用详细解析
字体:[ ] 类型:转载 时间:
最近在整理公司产品的日志输出规范,涉及log4j的使用介绍,就简单整理了一下。需要的朋友可以过来参考参考
1 Log4j配置说明
1.1 配置文件Log4j可以通过java程序动态设置,该方式明显缺点是:如果需要修改日志输出级别等信息,则必须修改java文件,然后重新编译,很是麻烦;
log4j也可以通过配置文件的方式进行设置,目前支持两种格式的配置文件:
•xml文件•properties文件(推荐)下面是一个log4j配置文件的完整内容: 代码如下:log4j.rootCategory=INFO, stdoutlog4j.rootLogger=info, stdout### stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n### set package ###log4j.logger.org.springframework=infolog4j.logger.org.apache.catalina=infolog4j.logger.mons.digester.Digester=infolog4j.logger.org.apache.catalina.startup.TldConfig=infolog4j.logger.chb.test=debug1.2 配置根Logger根logger主要定义log4j支持的日志级别及输出目的地,其语法为:log4j.rootLogger = [ level ] , appenderName, appenderName, …其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。
建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。appenderName指定日志信息输出到哪个地方,可同时指定多个输出目的地。
1.3 配置输出目的地AppenderAppender主要定义日志信息输出在什么位置,主要语法为: 代码如下:log4j.appender.appenderName = classInfolog4j.appender.appenderName.option1 = value1  …log4j.appender.appenderName.optionN = valueNLog4j提供的appender有以下几种:
•org.apache.log4j.ConsoleAppender(控制台), •org.apache.log4j.FileAppender(文件), •org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),•org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) •org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)以ConsoleAppender为例,如: 代码如下:log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.out1.4 配置日志信息的格式LayoutLayout 负责格式化Appender的输出,其语法为: 代码如下:log4j.appender.appenderName.layout = classInfolog4j.appender.appenderName.layout.option1 = value1…log4j.appender.appenderName.layout.optionN = valueN其中,Log4j提供的layout有以下几种:
•org.apache.log4j.HTMLLayout(以HTML表格形式布局), •org.apache.log4j.PatternLayout(可以灵活地指定布局模式), •org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)•org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
1.5 设置package输出级别可以设置不同package的日志输出级别,语法为:log4j.logger.packageName=level其中,packageName为实际的包名,level为日志级别,例如: 代码如下:log4j.logger.org.springframework=infolog4j.logger.org.apache.catalina=infolog4j.logger.mons.digester.Digester=infolog4j.logger.org.apache.catalina.startup.TldConfig=infolog4j.logger.chb.test=debug2 Log4j与J2ee结合
2.1 使用spring架构Spring真是不错,替我们做了很多事情,如果系统使用了spring框架,则要集成log4j就很简单了,主要分为3个步骤,如下:
2.1.1 定义log4j配置文件 代码如下:log4j.rootCategory=INFO, stdoutlog4j.rootLogger=info, stdout### stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n### log to file ###log4j.logger.org.springframework=infolog4j.logger.org.apache.catalina=infolog4j.logger.mons.digester.Digester=infolog4j.logger.org.apache.catalina.startup.TldConfig=infolog4j.logger.chb.test=debug2.1.2& 定义监听器监听器需要定义在web.xml,主要包括:定义log4j配置文件目录、log4j监听器,如下: 代码如下:&?xml version="1.0" encoding="UTF-8"?&&web-app version="2.4"&&& xmlns="/xml/ns/j2ee"&&& xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&&& xsi:schemaLocation="/xml/ns/j2ee&&& /xml/ns/j2ee/web-app_2_4.xsd"&&&& &!--由Spring载入的Log4j配置文件位置--&&&& &context-param&&&&&&& &param-name&log4jConfigLocation&/param-name&&&&&&& &param-value&/WEB-INF/log4j.properties&/param-value&&&& &/context-param&&&& &context-param&&&&&&& &param-name&contextConfigLocation&/param-name&&&&&&& &param-value&&&&&&&&&&& /WEB-INF/classes/applicationContext*.xml&&&&&& &/param-value&&&& &/context-param&&&& &!--Spring log4j Config loader--&&&& &listener&&&&&&& &listener-class&&&&&&&&&&& org.springframework.web.util.Log4jConfigListener&&&&&& &/listener-class&&&& &/listener&&&& &listener&&&&&&& &listener-class&&&&&&&&&&& org.springframework.web.context.ContextLoaderListener&&&&&& &/listener-class&&&& &/listener&&&& &servlet&&&&&&& &servlet-name&InitiaServlet&/servlet-name&&&& &servlet-class&chb.test.web.InitiaServlet&/servlet-class&&&&&&& &load-on-startup&1&/load-on-startup&&&& &/servlet&& &welcome-file-list&&&& &welcome-file&index.jsp&/welcome-file&& &/welcome-file-list&&/web-app&2.1.3& 测试类 代码如下:package com.dheaven.mip.import javax.servlet.ServletEimport javax.servlet.http.HttpSimport org.apache.log4j.Lpublic class InitiaServlet extends HttpServlet {&&& protected Logger log = Logger.getLogger(InitiaServlet.class);&&& private static final long serialVersionUID = 9690578L;&&& /**&&&& * Constructor of the object.&&&& */&&& public InitiaServlet() {&&&&&& super();&&& }&&& /**&&&& * Destruction of the servlet. &br&&&&& */&&& public void destroy() {&&&&&& super.destroy();&&& }&&& /**&&&& * Initialization of the servlet. &br&&&&& *&&&& * @throws ServletException if an error occure&&&& */&&& public void init() throws ServletException {&&&&&& log.debug("服务器启动了,log4j开始工作了");&&& }}2.2不使用spring架构如果系统没有使用spring,我们以servlet为例,很简单,大家按照步骤执行即可,只贴代码,不说废话。
2.2.1 定义log4j配置文件放在web工程的WEB-INF目录下,内容如: 代码如下:log4j.rootCategory=INFO, stdoutlog4j.rootLogger=info, stdout### stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p - %m%n### set package ###log4j.logger.org.apache.catalina=infolog4j.logger.mons.digester.Digester=infolog4j.logger.org.apache.catalina.startup.TldConfig=info.dheaven=debug2.2.2& 创建log4j初始化类 代码如下:package com.dheaven.mip.import javax.servlet.ServletEimport javax.servlet.http.HttpSimport org.apache.log4j.PropertyCpublic class InitLog4j extends HttpServlet {&&& private static final long serialVersionUID = 1L;&&& public void init() throws ServletException {&&&&&& String prefix = getServletContext().getRealPath("/");&&&&&& prefix = prefix.replace("//", "/");&&&&&& String file = getInitParameter("log4j-init-file");&&&&&& // if the log4j-init-file is not set, then no point in trying&&&&&& if (file != null) {&&&&&&&&&& PropertyConfigurator.configure(prefix + file);&&&&&& }&&& }}2.2.3& 在Web.xml中定义初始化类 代码如下:&&& &servlet&&&&&&& &servlet-name&log4j-init&/servlet-name&&&&&&& &servlet-class&chb.test.web.InitLog4j&/servlet-class&&&&&&& &init-param&&&&&&&&&&& &param-name&log4j-init-file&/param-name&&&&&&&&&&& &param-value&WEB-INF/log4j.properties&/param-value&&&&&&& &/init-param&&&&&&& &load-on-startup&1&/load-on-startup&&&& &/servlet&2.2.4 测试类 代码如下:package chb.test.&import javax.servlet.ServletEimport javax.servlet.http.HttpSimport org.apache.log4j.Lpublic class InitiaServlet extends HttpServlet {&&& protected Logger log = Logger.getLogger(InitiaServlet.class);&&& private static final long serialVersionUID = 9690578L;&&& /**&&&& * Constructor of the object.&&&& */&&& public InitiaServlet() {&&&&&& super();&&& }&&& /**&&&& * Destruction of the servlet. &br&&&&& */&&& public void destroy() {&&&&&& super.destroy();&&& }&&& /**&&&& * Initialization of the servlet. &br&&&&& *&&&& * @throws ServletException if an error occure&&&& */&&& public void init() throws ServletException {&&&&&& log.debug("服务器启动了,log4j开始工作了");&&& }}
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Log4j配置文件位置+Spring中数据源配置文件位置 - 推酷
Log4j配置文件位置+Spring中数据源配置文件位置
一.Log4j配置文件位置
应用程序启动时,默认情况下会到src目录下寻找log4j.xml配置文件,若不存在,会继续寻找log4j.properties文件,只要找到其中一个就会加载该配置文件内容。
2.手动加载
如果将log4j.properties(或log4j.xml)放到其它目录下,比如下图中的位置,应用程序就不能自动加载log4j的配置文件了,因为应用程序找不到该配置文件,你需要手动加载。
需要在应用程序启动的代码中加入如下的代码:
//加载config文件夹下的log4j.properties
String log4jPath=System.getProperty(&user.dir&)+&/config/log4j.properties&;
PropertyConfigurator.configure(log4jPath);
二.Spring中数据源配置文件位置
1.一般情况
比较常见的Spring加载数据源配置文件的方式如下:
&bean id=&propertyConfigurer&
class=&org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&&
&property name=&locations&&
&value&classpath:dataSource.properties&/value&
&/property&
这种方式是将dataSource.properties文件放在src的根目录下的。
2.其它位置
现在如果将dataSource.properties文件放在src同级的config的目录下,上面的配置方式就不行了,正确的配置方式如下:
&bean id=&propertyConfigurer&
class=&org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&&
&property name=&locations&&
&value&file:config/dataSource.properties&/value&
&/property&
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&通过 Spring 的 Log4jConfigListener 在启动时开启定时器进行定时加载配置文件web.xml配置&!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的&webapp.root&--&&&context-param&& & & &param-name&webAppRootKey&/param-name&& & & &param-value&ssh.root&/param-value&&&/context-param&这里的ssh是http://localhost:8080/ssh/而root是系统开发目录中ssh/root&!--由Sprng载入的Log4j配置文件位置--&&&context-param&& & & &param-name&log4jConfigLocation&/param-name&& & & &param-value&/WEB-INF/classes/log4j.xml&/param-value&&&/context-param&&!--Spring默认刷新Log4j配置文件的间隔,单位为millisecond--&&&context-param&& & & &param-name&log4jRefreshInterval&/param-name&& & & &param-value&60000&/param-value&&&/context-param&&!--Spring log4j Config loader--&&&listener&& & & &listener-class&org.springframework.web.util.Log4jConfigListener&/listener-class&&&/listener&关注【Java技术堂】Java技术堂(javaf8) 
 文章为作者独立观点,不代表微头条立场
的最新文章
程序员不遵守这些规定,我要代表月亮消灭你!哈哈:)技术有两个发展方向,一种是纵向一种是横向的,横向的是瑞士军刀,纵向的是削铁如泥的干将莫邪。
这两个方向都没有对与错,发展到一定程度都会相互溶合,就好比中国佛家禅修的南顿北渐,其实到了最后,渐悟与顿悟是一样的,顿由渐中来。马云说员工离职的原因林林总总,但基本上可以归结为两点:钱,没给到位;心,受委屈了。这些归根结底就一条:干得不爽。这篇文章咱就来看看程序员会因为哪些不爽而跳槽——与钱无关的那些哦。软件工程师的核心价值应该是实现想法和解决问题,当然,一切归根结底最重要的因素还是看人。通常,心态开放并积极学习的人,运气都不会太坏。面试官是企业形象的代表,面试是一次买卖,买卖不成仁义在。什么是能力?
1. 遇到问题的态度
2. 处理问题的思路和方法
总之就是以最小最快的成本解决问题什么,你是设计师,真没看出来code review 是软件生命周期管理中重要的一部分,因为它能帮助我们交付高质量代码、合格作品。程序员的创新不应是来自外部。而是关注当下,从细微处改变。才可引领风骚。修改日志级别,不用重启web应用,立即生效。编程很难吗?看完这张漫画,把四大秘籍记在心中,妈妈再也不担心了!哪里不会搜哪里!嘻嘻~如何激励程序员?关于这个问题,有个内在的矛盾。我想下面这两幅漫画就完美地表达出来了。最诡异的问题总是与它有关系在程序员这个行业,坚持做技术写作的人一直比较少。用于解决平时编程经常会遇到的问题,减少重复劳动。常用工具类:
1.字符串的空判断
2.字符串的Trim
3.字符串的分割
4.字符串的连接
5.字符串的Escape
8.日期AOP在编程历史上可以说是里程碑式的,对OOP编程是一种十分有益的补充。Java高级玩家必须要掌握的神器。javaf8分享最典型的实践知识、案例,整理最真实的心得体会。解读最优秀的理论、设计思想。这里有趣、好玩、轻松、搞笑。这里是新手们的学习乐园,老手们经验沉淀的宝库。感谢您的关注,欢迎您的加入。热门文章最新文章javaf8分享最典型的实践知识、案例,整理最真实的心得体会。解读最优秀的理论、设计思想。这里有趣、好玩、轻松、搞笑。这里是新手们的学习乐园,老手们经验沉淀的宝库。感谢您的关注,欢迎您的加入。

我要回帖

更多关于 spring mvc 加载log4j 的文章

 

随机推荐