Java tomcat上的spring mvc应用程序:slf4j不';找不到logback.xml,只记录到catalina.out
更新:问题已经解决。问题是我试图将日志文件放入tomcat7用户无权访问的目录中。请参阅下面的答案和评论 原职: 我有一个在tomcat上运行的spring mvc应用程序 我用gradle(3.0)构建我的应用程序 我刚刚安装了slf4j,但它只登录到catalina.out(与post中的相同) 我已经将logback.xml文件放在我的“project\src\main\java”和“project\src\main\webapp\resources”下,但无论如何它都不会创建日志文件,只是将所有日志放在catalina.out中 从上面提到的另一篇文章中,它说要将文件放在类路径下,我知道它是'project\src'目录 任何关于如何解决这个问题的想法都将不胜感激 谢谢 AHL logback.xml:Java tomcat上的spring mvc应用程序:slf4j不';找不到logback.xml,只记录到catalina.out,java,spring,tomcat,slf4j,Java,Spring,Tomcat,Slf4j,更新:问题已经解决。问题是我试图将日志文件放入tomcat7用户无权访问的目录中。请参阅下面的答案和评论 原职: 我有一个在tomcat上运行的spring mvc应用程序 我用gradle(3.0)构建我的应用程序 我刚刚安装了slf4j,但它只登录到catalina.out(与post中的相同) 我已经将logback.xml文件放在我的“project\src\main\java”和“project\src\main\webapp\resources”下,但无论如何它都不会创建日志文件,只
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- *** CONFIGURE APPLICATION LOG DIRECTORY *** -->
<property name="DEV_HOME" value="/var/lib/tomcat7/logs/spring4-1" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<appender name="FILE-AUDIT"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${DEV_HOME}/debug.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} - %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<appender name="FILE-ERROR"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${DEV_HOME}/error.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} - %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${DEV_HOME}/archived/error.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- Send logs to both console and file audit -->
<logger name="com.concretepage" level="debug"
additivity="false">
<appender-ref ref="FILE-AUDIT" />
<appender-ref ref="STDOUT" />
</logger>
<root level="error">
<appender-ref ref="FILE-ERROR" />
</root>
</configuration>
build.gradle:
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'war'
archivesBaseName = 'spring4'
version = '1'
repositories {
mavenCentral()
}
dependencies {
compile 'org.springframework.boot:spring-boot-starter-web:1.3.3.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-data-jpa:1.3.3.RELEASE'
compile 'org.hibernate:hibernate-core:4.3.6.Final'
compile 'mysql:mysql-connector-java:5.1.31'
compile 'commons-dbcp:commons-dbcp:1.4'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat:1.3.3.RELEASE'
compile "ch.qos.logback:logback-classic:1.1.3"
compile "org.slf4j:log4j-over-slf4j:1.7.13"
}
configurations.all {
exclude group: "org.slf4j", module: "slf4j-log4j12"
exclude group: "log4j", module: "log4j"
}
sourceSets {
main {
resources {
srcDirs "src/main/resources"
}
}
}
运行服务器进程的tomcat用户:
vagrant@precise32:/vagrant/Spring4RESTAngularJS$ ps auxwww | grep -v grep | grep tomcat
tomcat7 2435 3.2 77.0 1238660 291328 ? Sl 14:13 0:16 /usr/lib/jvm/java-7-oracle/bin/java -Djava.util.logging.config.file=/var/lib/tomcat7/conf/logging.properties -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms512m -Xmx1024m -Djava.endorsed.dirs=/usr/share/tomcat7/endorsed -classpath /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/var/lib/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.io.tmpdir=/tmp/tomcat7-tomcat7-tmp org.apache.catalina.startup.Bootstrap start
vagrant@precise32:/vagrant/Spring4RESTAngularJS$
日志文件夹的权限:
vagrant@precise32:/vagrant/Spring4RESTAngularJS$ ll /home/vagrant/
total 72
drwxr-xr-x 7 vagrant vagrant 4096 Sep 2 19:04 ./
drwxr-xr-x 3 root root 4096 Sep 14 2012 ../
-rw------- 1 vagrant vagrant 8574 Sep 3 09:31 .bash_history
-rw-r--r-- 1 vagrant vagrant 220 Sep 14 2012 .bash_logout
-rw-r--r-- 1 vagrant vagrant 3486 Sep 14 2012 .bashrc
drwx------ 2 vagrant vagrant 4096 Sep 14 2012 .cache/
drwxrwxr-x 6 vagrant vagrant 4096 Aug 28 20:01 .gradle/
drwxrwxr-x 2 vagrant vagrant 4096 Sep 2 19:04 logs/
drwxrwxr-x 3 vagrant vagrant 4096 Aug 27 21:59 .m2/
-rw------- 1 vagrant vagrant 1155 Aug 30 22:28 .mysql_history
-rwxr-xr-x 1 vagrant vagrant 6487 Sep 14 2012 postinstall.sh*
-rw-r--r-- 1 vagrant vagrant 675 Sep 14 2012 .profile
drwx------ 2 vagrant vagrant 4096 Aug 27 08:37 .ssh/
-rw-r--r-- 1 vagrant vagrant 0 Sep 14 2012 .sudo_as_admin_successful
-rw------- 1 vagrant vagrant 6 Sep 14 2012 .vbox_version
-rw------- 1 vagrant vagrant 12 Sep 14 2012 .veewee_version
vagrant@precise32:/vagrant/Spring4RESTAngularJS$
将
logback.xml
放入src/main/resourcers
中。这就是rght的位置如果在默认情况下运行maven安装程序,那么添加src/main/resources的任何内容都会进入类路径的根目录,因此最好将其放置在
logback.xml
在
src/main/resources
或者,您也可以将文件夹添加到类路径
<build>
<resources>
<resource>
<directory>src/main/webapp/resources</directory>
</resource>
</resources>
</build>
src/main/webapp/resources
您是如何启动服务器的?您确定运行服务器进程的用户有权访问/home/vagrant/logs目录吗
另外,在logback.xml中,尝试设置调试属性:
<configuration debug="true">
如果你的logback.xml被选中,那么它应该会向catalina.out输出很多额外的信息。logback.xml应该在src/main/resourcesI use gradle中;我已经将build.gradle文件放在我的原始帖子中了。我如何在gradle中执行此操作?我将该文件放在src/main/resources中,重建项目并部署。但是,我的文件夹/home/vagrant/logs/@AHL中仍然没有日志文件。这篇文章解释了如何添加到gradle,并检查您的日志目录是否具有应用程序写入的权限。记住你的类pkg“org.codingpedia”只会记录'DEBUG'或higheralright;因此,记录器根本不会搜索我将文件放在项目中的位置?我将文件放在src/main/resources中,重建项目并进行部署。但是,我的文件夹/home/vagrant/logs/I中仍然没有日志文件将debug=“true”添加到我的配置中,但在catalina.out中似乎没有创建其他日志。我使用“sudo服务tomcat7停止/启动”(在bash脚本中)启动tomcat服务器。如何检查哪个用户运行服务器进程,然后如何检查该用户是否具有对我的日志目录的写访问权限?我的日志目录具有权限:“drwxrwxr-x 2 vagrant vagrant 4096 Sep 2 19:04 logs/”。谢谢不确定这是否有帮助,但我已尝试确定哪个用户运行tomcat进程,并将其粘贴到原始帖子中;还添加了有关我的日志目录的文件夹权限的信息。问题似乎与目录权限有关。我现在在“/var/lib/tomcat7/logs/”下创建了一个子目录,并使用chown将其用户设置为tomcat7 user,并将权限设置为“drwxr-xr-x”,即tomcat7用户将能够写入其中。我已经更新了上面的logback.xml;我最终使用了MK Yong网站提供的:
<configuration debug="true">