代码之家  ›  专栏  ›  技术社区  ›  Jin Lee

除了Log4jXML、属性文件和源代码(主要是Java)之外的配置日志的方法?

  •  1
  • Jin Lee  · 技术社区  · 6 年前

    我在看一些应用程序的源代码。它正在使用 Spring框架、Apache瓦片、JSP、Log4J、Java、JavaScript、jQuery、JQPrand、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文件和属性文件之外,是否有方法配置日志的创建位置和创建方式(4种类型的日志)?我查看了所有的Java、JSP、JS代码,但似乎找不到日志的配置。所以我想知道是否还有其他的方法可以做到这一点,或者应该在哪里寻找这些配置。

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

    LDAP.性能

    #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中多次使用“搜索”功能。(日志、工作目录和4种类型的日志名称,以及许多其他名称。我找不到有关日志配置的代码。:(

    我的log4j版本 :

    1.2.15

    1 回复  |  直到 6 年前
        1
  •  1
  •   Laplas    6 年前

    好吧,似乎有一个解决方案可以帮助你。它需要一些静态初始化块的调试 org.apache.log4j.LogManager 班级。此类负责加载记录器配置文件。下面是一个文档链接,详细描述了初始化过程: link .
    以下是日志管理器源文件的摘录:

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

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

    即使这种方法失败了,我建议您调查运行时检索到的appenders列表。下面是一个stackoverflow线程,它描述了如何执行此操作: link .