除了log4j xml,属性文件和源代码(主要是java)以外,配置日志的方法是什么?

时间:2019-01-02 05:08:42

标签: java spring logging log4j

我正在查看某些应用程序的源代码。它使用 Spring框架,Apache Tiles,JSP,Log4j,java,javascript,jquery,jqplot,Jsch 等。

我知道在哪里创建日志。 (a / b / logs)但是,当我查看源代码时,我不知道如何在文件夹名称“ logs”下创建日志。我查看了log4j.xml,web.xml,属性文件。我找到了有关如何创建路径“ a / b”的代码,但没有找到日志。该文件夹还具有4种日志类型。它们以access.20181227001,errors.20182111之类的模式命名。我想知道在哪里可以找到如何以这种方式创建日志。

  

Log4J.xml

<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %5p [%c] %m%n" />
    </layout>
</appender>

<appender name="console-infolog" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %5p %m%n" />
    </layout>  
</appender> 

<!-- Application Loggers -->
<logger name="com.dsmentoring.chakan" additivity="false">
    <level value="debug" />
    <appender-ref ref="console"/>
</logger>

<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
    <level value="error"/> 
</logger>

<!-- Bean logger -->
<logger name="org.springframework.beans">
    <level value="error"/> 
</logger>

<!-- Context logger -->
<logger name="org.springframework.context">
    <level value="error"/> 
</logger>

<!-- Web logger -->
<logger name="org.springframework.web">
    <level value="error"/> 
</logger>

<logger name="org.springframework.ldap" additivity="true">
    <level value="error"/> 
</logger>
<!-- LDAP logger -->
<logger name="com.unboundid.ldap" additivity="true">
    <level value="error"/> 
</logger>

<!-- Root Logger -->
<root>
    <priority value="off" />
    <appender-ref ref="console" />
</root>

总结:

1)除了log4j.xml,xml文件和属性文件之外,是否可以配置日志的创建位置和创建方式(四种日志类型)?我查看了所有的Java,JSP,JS代码,但似乎找不到日志的配置。因此,我想知道是否还有其他方法可以做到这一点,或者应该在哪里寻找这些配置。

2)'logs'文件夹可能是log4j的默认文件夹?

  

ldap.properties

#LDAP Connection Info
ldap.host=192.168.0.17 
ldap.port=22389 
ldap.userName=cn=directory manager 
ldap.password= 9074B18A0DE2D50C068D37B60BE5DFDE 
ldap.baseDN=o=sso30root 
ldap.defaultLoadSize=1000 
ldap.start=start-ds 
ldap.stop=stop-ds 
ldap.workdir=/home/KB_openDJ     // logs are created under this path
                                 // /home/KB_openDJ/logs 

在其他java类中,他们使用此方法。

@Value("${ldap.workdir}")
private String WORK_DIR;

//  I ommited many lines in between

try{
            diskUsage = sigar.getFileSystemUsage(WORK_DIR);
            diskIOInfo.setDiskRead((int)(diskUsage.getDiskReadBytes()));
            diskIOInfo.setDiskWrite((int)(diskUsage.getDiskWriteBytes()));
        }catch(SigarException sigarEx){
            log.debug("Disk Usage info load Error : " + sigarEx.getMessage());
        }

我在Eclipse中多次使用了“搜索”功能。 (日志,WORK_DIR和4种类型的日志名称,以及许多其他类型。我无法找到有关日志记录配置的代码。:(

我的log4j版本

  

1.2.15

1 个答案:

答案 0 :(得分:1)

好吧,似乎有一种解决方案可能会对您有所帮助。它需要对org.apache.log4j.LogManager类的静态初始化块进行一些调试。此类负责加载记录器配置文件。以下是一个文档链接,该链接完整描述了初始化过程:link
这是LogManager源文件的摘录:

String configurationOptionStr = OptionConverter.getSystemProperty(DEFAULT_CONFIGURATION_KEY, null);
String configuratorClassName = OptionConverter.getSystemProperty(CONFIGURATOR_CLASS_KEY, null);

我想在这里向您展示的是,您的记录器配置文件可能被指定为提供给应用程序服务器的JVM选项。这就是为什么您无法确定实际使用的文件的原因。

即使这种方法失败了,我还是建议您调查运行时检索到的附加程序列表。这是一个堆栈溢出线程,描述了如何执行此操作:link