我正在查看某些应用程序的源代码。它使用 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
答案 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。