除了 log4j xml、属性文件和源代码(主要是 java)之外,配置日志的方法?
Ways to configure logs other than log4j xml, properties file, and source code (mainly java)?
我正在查看某个应用程序的源代码。它正在使用 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 文件和 属性 文件之外,是否可以配置创建日志的位置和创建方式(4 种类型的日志)?我查看了所有 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 class中,他们使用这个。
@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 中的 'Search' 功能。 ( 日志,WORK_DIR 和 4 种类型的日志名称,等等。我无法找到有关日志记录配置的代码。:(
我的 log4j 版本:
1.2.15
好的,看来有一个解决方案可能会对您有所帮助。它需要对 org.apache.log4j.LogManager
class 的静态初始化块进行一些调试。这个 class 负责加载记录器配置文件。这是一份完整描述初始化过程的文档 link:link.
以下是 LogManager 源文件的摘录:
String configurationOptionStr = OptionConverter.getSystemProperty(DEFAULT_CONFIGURATION_KEY, null);
String configuratorClassName = OptionConverter.getSystemProperty(CONFIGURATOR_CLASS_KEY, null);
我想在这里向您展示的是,您的记录器配置文件可能被指定为提供给您的应用程序服务器的 JVM 选项。这就是您无法确定正在使用的实际文件的原因。
即使此方法失败,我也建议您调查在 运行 时间检索到的附加程序列表。这是一个描述如何执行此操作的 Whosebug 线程:link.
我正在查看某个应用程序的源代码。它正在使用 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 文件和 属性 文件之外,是否可以配置创建日志的位置和创建方式(4 种类型的日志)?我查看了所有 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 class中,他们使用这个。
@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 中的 'Search' 功能。 ( 日志,WORK_DIR 和 4 种类型的日志名称,等等。我无法找到有关日志记录配置的代码。:(
我的 log4j 版本:
1.2.15
好的,看来有一个解决方案可能会对您有所帮助。它需要对 org.apache.log4j.LogManager
class 的静态初始化块进行一些调试。这个 class 负责加载记录器配置文件。这是一份完整描述初始化过程的文档 link:link.
以下是 LogManager 源文件的摘录:
String configurationOptionStr = OptionConverter.getSystemProperty(DEFAULT_CONFIGURATION_KEY, null);
String configuratorClassName = OptionConverter.getSystemProperty(CONFIGURATOR_CLASS_KEY, null);
我想在这里向您展示的是,您的记录器配置文件可能被指定为提供给您的应用程序服务器的 JVM 选项。这就是您无法确定正在使用的实际文件的原因。
即使此方法失败,我也建议您调查在 运行 时间检索到的附加程序列表。这是一个描述如何执行此操作的 Whosebug 线程:link.