проблема с stacktrace.log при развертывании приложения grails - PullRequest
9 голосов
/ 26 мая 2011

У меня проблема с развертыванием приложения Grails.

я получаю следующее исключение:

log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: stacktrace.log (Permission denied)
    at java.io.FileOutputStream.openAppend(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:177)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:102)
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
    at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
    at org.apache.log4j.spi.OptionHandler$activateOptions.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
    at org.codehaus.groovy.grails.plugins.logging.Log4jConfig.createFullstackTraceAppender(Log4jConfig.groovy:177)
    at org.codehaus.groovy.grails.plugins.logging.Log4jConfig.this$2$createFullstackTraceAppender(Log4jConfig.groovy)
    at org.codehaus.groovy.grails.plugins.logging.Log4jConfig$this$2$createFullstackTraceAppender.callCurrent(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)
    at org.codehaus.groovy.grails.plugins.logging.Log4jConfig.configure(Log4jConfig.groovy:145)
    at org.codehaus.groovy.grails.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:62)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
    at org.apache.catalina.core.StandardService.start(StandardService.java:519)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
May 25, 2011 11:16:54 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext

мои настройки для логгера в конфиге выглядят так:

log4j = { 
    appenders {
        rollingFile name: "stacktrace", maxFileSize: 1024, file: "/var/www/logs/myapp-stacktrace.log"
     }
 }

я также пытался отключить регистратор с log4j = { appenders { 'нулевое' имя: "stacktrace" } }

разрешения для этого каталога установлены для пользователя tomcat

-rwxr--r-- 1 tomcat6 root 0 May 24 18:38 myapp-stacktrace.log

безуспешно ... спасибо за любые отзывы и помощь !!

Ответы [ 3 ]

8 голосов
/ 03 сентября 2011

Я столкнулся с аналогичной проблемой с Grails 1.3.7 и обнаружил, что это исправлено (путем помещения журнала трассировки стека в стандартный каталог журналирования)

log4j = {
    appenders {
    rollingFile name: "stacktrace", maxFileSize: 1024, file: "/var/logs/piws-stacktrace.log"
    ....
6 голосов
/ 08 июля 2012

Ознакомьтесь с официальной документацией по развертыванию приложения Grails в Tomcat по адресу http://www.grails.org/Deployment/#Tomcat.

Чтобы процитировать соответствующий раздел ...

"Имейте в виду, что в настройках по умолчанию Grails попытаетсядля записи в каталог tomcat определенных файлов, обычно это stacktrace.log и база данных h2. Ваш каталог Tomcat, скорее всего, установлен с владельцем / группой root, а сервер Tomcat работает как пользователь tomcat6. Это приведет к сбою запуска приложения.с ошибками разрешения записи. Либо измените свои производственные настройки Grails, чтобы эти файлы записывались в другом месте, в каталоги с правильными разрешениями, либо измените владельца каталога Tomcat (для Unix: / var / lib / tomcat6) на tomcat6 (или любой другойПользователь tomcat, настроенный вами с помощью параметра TOMCAT6_USER)."

Вы можете использовать sudo chown tomcat6 /var/lib/tomcat6, чтобы сменить владельца (замените пользователя, запустившего tomcat, и каталог, в который при необходимости записываются журналы),что является самым простым и наиболее подходящим решением длябольшинство ситуаций.

1 голос
/ 26 мая 2011

проверьте дисковое пространство (длинный снимок) и попробуйте chmodding для 777, чтобы убедиться, что проблема с разрешениями.Если это так, то вы либо не используете tomcat как пользователь tomcat, либо ваши каталоги отключены ...

...