zoukankan      html  css  js  c++  java
  • log4j:WARN No appenders could be found for logger

    最近在赶写高级软件工程的大作业,老师就是厚道,一个作业居然要做完整的一个java项目,还要画UML,这些之前都没接触过,只能硬着头皮上了。不过,收获还是蛮多的,下面是遇到的关于log4j的问题:

    第一个:

    log4j:WARN No appenders could be found for logger

    (org.springframework.context.support.ClassPathXmlApplicationContext).

    log4j:WARN Please initialize the log4j system properly.

    这个是在用JUnit4做测试时遇到的,虽然不会引起什么错,但是能解决的问题,还是不让遗留的好。

    查询到的方法是

     

    在src 目录下创建配置文件,选择菜单File > New > File,文件名输入log4j.properties,文件内容如下所示:

     

    log4j.rootLogger=WARN, stdout

     

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender

     

    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

     

    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

    经过上面的操作,可以在控制台显示错误的详细信息了。

    第二个:

     log4j:WARN No appenders could be found for logger (com.opensymphony.xwork2.config.providers.XmlConfigurationProvider).

     

    解决方法是将Tomcat下面的其他项目全部移开,然后再重新启动Tomcat,果然,没有再warn。

    对此,我的理解是,其他的项目中没有添加log4j.properties文件,导致的错误,时间紧迫,就没有去验证。

     

     

    PS:附录一些查到的,感觉有用的,但是没有用到的知识:

     当启动eclipse中的Tomcat时,首先他会自动查找工程中用到的自身文件夹下的common/lib下的jar文件,如果找到的话,就进行加载,然后才查找conf/下的log4j.properties等相关的配置文件,正是因为这样,才会报告没有初始化的信息。如果在common/lib下没有找到工程中要用到的jar文件,就先配置conf/下的配置文件,然后到工程中自身包含的lib下查找所用到的jar文件,这时就先把log4j的初始化工作作完了,所以这时在启动Tomcat时就不再提示没有初始化的警告信息了。总结:在配置各种运行环境的时候,不要认为将要用到的jar文件拷贝到所有的相关的lib文件夹下,就会省很多事,想当然地认为用到时会自动调用,但是当相关配置有先后顺序的时候,会带来很多不必要的麻烦以及意想不到的问题。所以要充分地了解jar文件的用途以及他应该在的位置

    (来源:徐镇源)

    常用log4j配置,一般可以采用两种方式,.properties和.xml,下面举两个简单的例子:
    一、log4j.properties
    ### 设置org.zblog域对应的级别INFO,DEBUG,WARN,ERROR和输出地A1,A2 ##
    log4j.category.org.zblog=ERROR,A1
    log4j.category.org.zblog=INFO,A2
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    ### 设置输出地A1,为ConsoleAppender(控制台) ##
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    ### 设置A1的输出布局格式PatterLayout,(可以灵活地指定布局模式)##
    log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
    ### 配置日志输出的格式##
    log4j.appender.A2=org.apache.log4j.RollingFileAppender
    ### 设置输出地A2到文件(文件大小到达指定尺寸的时候产生一个新的文件)##
    log4j.appender.A2.File=E:/study/log4j/zhuwei.html
    ### 文件位置##
    log4j.appender.A2.MaxFileSize=500KB
    ### 文件大小##
    log4j.appender.A2.MaxBackupIndex=1
    log4j.appender.A2.layout=org.apache.log4j.HTMLLayout
    ##指定采用html方式输出
    二、log4j.xml
    <?xml version="1.0" encoding="GB2312" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="org.zblog.all" class="org.apache.log4j.RollingFileAppender">
    <!-- 设置通道ID:org.zblog.all和输出方式:org.apache.log4j.RollingFileAppender -->
        <param name="File" value="E:/study/log4j/all.output.log" /> <!-- 设置File参数:日志输出文件名 -->
        <param name="Append" value="false" /> <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
        <param name="MaxBackupIndex" value="10" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%p (%c:%L)- %m%n" /> <!-- 设置输出文件项目和格式 -->
        </layout>
    </appender>
    <appender name="org.zblog.zcw" class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="E:/study/log4j/zhuwei.output.log" />
        <param name="Append" value="true" />
        <param name="MaxFileSize" value="10240" /> <!-- 设置文件大小 -->
        <param name="MaxBackupIndex" value="10" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
        </layout>
    </appender>
    <logger name="zcw.log"> <!-- 设置域名限制,即zcw.log域及以下的日志均输出到下面对应的通道中 -->
        <level value="debug" /> <!-- 设置级别 -->
        <appender-ref ref="org.zblog.zcw" /> <!-- 与前面的通道id相对应 -->
    </logger>
    <root> <!-- 设置接收所有输出的通道 -->
        <appender-ref ref="org.zblog.all" /> <!-- 与前面的通道id相对应 -->
    </root>
    </log4j:configuration>
    三、配置文件加载方法:
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    import org.apache.log4j.xml.DOMConfigurator;
    public class Log4jApp {
        public static void main(String[] args) {
            DOMConfigurator.configure("E:/study/log4j/log4j.xml");//加载.xml文件
            //PropertyConfigurator.configure("E:/study/log4j/log4j.properties");//加载.properties文件
            Logger log=Logger.getLogger("org.zblog.test");
            log.info("测试");
        }
    }

    (来源:sunshinegyy的专栏)

     

  • 相关阅读:
    out/host/linuxx86/obj/EXECUTABLES/aapt_intermediates/aapt 64 32 操作系统
    linux 查看路由器 电脑主机 端口号 占用
    linux proc进程 pid stat statm status id 目录 解析 内存使用
    linux vim 设置大全详解
    ubuntu subclipse svn no libsvnjavahl1 in java.library.path no svnjavahl1 in java.library.path no s
    win7 安装 ubuntu 双系统 详解 easybcd 工具 不能进入 ubuntu 界面
    Atitit.json xml 序列化循环引用解决方案json
    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
    Atitit.跨语言  文件夹与文件的io操作集合  草案
    Atitit.atijson 类库的新特性设计与实现 v3 q31
  • 原文地址:https://www.cnblogs.com/idealing/p/3120782.html
Copyright © 2011-2022 走看看