2014-09-29 165 views
0

下面的问题对许多人来说可能看起来很愚蠢,因为它应该有一个简单的解决方案,但我是Spring框架的初学者,并且我一直在搜索和测试许多没有成功的方法。Spring日志记录和application.properties

所以,我需要实现基于Spring的Web服务日志记录。 Maven用于依赖关系,具有spring-boot-starter-ws依赖关系,而不是整个starter-web启动器。

我尝试了log4j,通过添加一个依赖和配置文件,它确实会生成一个日志文件,但仅用于记录器本身的初始化,并且没有关于何时使用服务的日志记录,尽管log4j处于TRACE水平。 我也尝试了使用logback,通过添加logback.xml文件,并添加starter-logging依赖项,但也创建空的日志文件,其中没有任何内容。

在Spring启动文档中,提到了application.properties文件。所以我在WEB-INF中创建了这个项目,并把logging.level.org.springframeworklogging.path条目。但仍然没有创建日志文件。

我不想记录自己的消息,我只想记录Spring自身生成的事件。而且我也没有主要方法,只有Web服务的端点,如果其中任何一个可能是相关的。所以我需要的是尽可能简单的日志记录,可能不需要添加太多的依赖关系,并将Spring消息检索到日志中。有人能告诉我我做错了什么吗?

回答

-1

不知道logging.level.org.springframework and the logging.path是否适用于弹簧靴。你可以试着将你的logback.xml文件,并直接向application.properties中DIR resources贴+这logback.xml

<?xml version="1.0" encoding="UTF-8"?> 
<configuration scan="true" scanPeriod="30 seconds"> 
<include resource="org/springframework/boot/logging/logback/base.xml"/> 
<logger name="org.springframework" level="DEBUG" appender-ref="FILE"/> 
</configuration> 

这应该登录控制台和/ tmp目录(如Linux)的目录。

//更新:

手动设置在哪里写日志,你可以这样做(我基本上什么这是进口base.xml的内部减小):

<appender name="FILE_APPENDER" 
    class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <encoder> 
     <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%t] --- %-40.40logger{39} : %m%n%wex</pattern> 
    </encoder> 
    <file>C://yourDir</file> 
</appender> 

,然后改变

<logger name="org.springframework" level="DEBUG" appender-ref="FILE"/> 

到:

<logger name="org.springframework" level="DEBUG" appender-ref="FILE_APPENDER"/> 
+0

对不起,但它是Windows,我不确定它在哪里保存日志,我也不知道如何自己设置文件夹。有什么简单的标签,我应该添加设置文件的位置? – stackoverflowthebest 2014-09-29 10:13:50

+0

不错,谢谢,它现在工作。我猜这个文件格式不正确。 – stackoverflowthebest 2014-09-29 13:21:40

1

logback是Spring Boot使用的默认日志记录实现(我假设你使用spring引导来创建jar并运行它!)。基本上,你不需要做任何事情记录已经由你包括的初学者处理。

Spring提供了一个默认的logback.xml,它打开日志记录,因为Spring框架在INFO上。

如果你想覆盖这个,只需创建一个与默认内容相同的logback.xml文件,并将弹簧的记录器放在DEBUG或TRACE上。不知道你是否真的想把所有东西都追踪到,除非你想要一个性能较低的应用程序。

至于你在做什么错,是你可能做得太多,思维复杂。

0

我在WEB-INF

与你已经尝试过的唯一的问题创造了这个。它必须放在classpath中(*如果你有一个普通的构建配置,把它放在“src/main/resources”中,如果你由于某种原因手动构建一个WAR,则放在“WEB-INF/classes”中)。

+0

我正在用Maven构建WAR。然而,它只是通过将其放在'WEB-INF'中。尽管我不确定为什么log4j不起作用,但我现在不会再尝试。 – stackoverflowthebest 2014-09-30 10:03:55