1.我使用的是 protected static Logger log4j = Logger.getLogger(AbsCustomerWarn.class);实例化
但是这样的实例化 
如果 Class B 继承AbsCustomerWarn
在B中使用log4j 显示的信息 还是AbsCustomerWarn 的 而不是B
2006-05-16 17:40:12 [com.XXX.eba.module.hold.log.action.AbsCustomerWarn]-[INFO]
如何在父类中实例化 后
在子类中使用 还是子类的名字
比如上面 显示的应该是
2006-05-16 17:40:12 [com.XXX.eba.module.hold.log.action.B]-[INFO]2.如何配置log4j 使在控制台输出的是info级 而在文件中写入的是warn级的

解决方案 »

  1.   

    因为log4j是静态的,不会被继承。你访问的仍然是A中的log4j,同样传递的getLogger参数都仍然是A.class
      

  2.   

    1:试试:this.class——我没试过不知道对不对啊,如果可以楼主就说一声。2:配置(左括号代以-):
       -appender name="INFO" class="org.apache.log4j.ConsoleAppender">
    -param name="Target" value="System.out"/>
             -layout class="org.apache.log4j.PatternLayout">
             -param name="ConversionPattern" value="%c %d{ISO8601}-- %p -- %m%n"/>
                    -/layout>
                    -filter class="org.apache.log4j.varia.LevelRangeFilter">
                         -param name="LevelMin" value="INFO" />
                         -param name="LevelMax" value="INFO" />
                    -/filter>
        -/appender>    -appender name="WARN" class="org.apache.log4j.RollingFileAppender">
          -param name="File" value="c:\\application.log"/>
          -param name="Append" value="true"/>
          -param name="MaxFileSize" value="128KB"/>
          -param name="MaxBackupIndex" value="2"/>
                    -layout class="org.apache.log4j.PatternLayout">
                    -param name="ConversionPattern" value="%d{yyyy-MM-dd hh:mm:ss,SSS}:[%p] %c - %m%n"/>
                    -/layout>
                    -filter class="org.apache.log4j.varia.LevelRangeFilter">
                        -param name="LevelMin" value="WARN" />
                        -param name="LevelMax" value="WARN" />
                    -/filter>
       -/appender>    -root>
            -priority value="warn"/>
            -appender-ref ref="INFO"/>
            -appender-ref ref="WARN"/>
        -/root>
      

  3.   

    回楼上的 
    this.class  编译不通过上面的XML形式的 能否改成.property形式问
    那怎么样才能使 B获得的是B.class  (B继承A  A中定义log4j  B中直接使用 )
      

  4.   

    那就试试this.class.getName()之类的,不过很可能也不成,那你就在每个类获取日值对象,直接写类名,比如:
    protected static Logger log4j = Logger.getLogger(“类名”);我记得用.property是无法实现这个要求的,XML一样简单好用的,能实现很多东西,只是说明文档是要买的。
      

  5.   

    log4j是静态的,不会被继承。你访问的仍然是A中的log4j,同样传递的getLogger参数都仍然是A.class
      

  6.   

    如果 我把.property 改成了 XML 不是还要写个适配器 才能 解决 两者之间的问题?