2015-02-20 8 views
1

У меня есть веб-приложение J2EE с логином в качестве функции регистрации и использование Tomcat 7 в качестве сервера. Я использую logon ConsoleAppender прямо сейчас, поэтому я могу перейти на /var/log/tomcat7/catalina.out, чтобы проверить журнал.Location logback default file appender

Прямо сейчас, я хочу переместить журнал в файл. Я буду использовать RollingFileAppender для сохранения журнала.

Я НЕ хочу, чтобы использовать абсолютный путь как:

<appender name="FILE" class="xxx.RollingFileAppender"> 
    <file>/var/log/testFile1.log</file> 
    <encoder> 
     <pattern>%msg%n</pattern> 
    </encoder> 
</appender> 

Я НЕ хочу использовать системные переменные среды, либо, как:

<appender name="FILE" class="xxx.RollingFileAppender"> 
    <file>{LOG_LOCATION}\testFile2.log</file> 
    <encoder> 
     <pattern>%msg%n</pattern> 
    </encoder> 
</appender> 

Если Я пишу только имя файла журнала в теге, например:

<appender name="FILE" class="xxx.RollingFileAppender"> 
    <file>testFile3.log</file> 
    <encoder> 
     <pattern>%msg%n</pattern> 
    </encoder> 
</appender> 

Я получаю ошибку:

21:29:45,265 |-ERROR in ch.qos.logback.core.FileAppender[TEST_LOG] - openFile(testFile3.log,true) call failed. java.io.FileNotFoundException: testFile3.log (Permission denied) 
     at java.io.FileNotFoundException: testFile3.log (Permission denied) 
     at  at java.io.FileOutputStream.open(Native Method) 
     at  at java.io.FileOutputStream.<init>(FileOutputStream.java:221) 
     at  at ch.qos.logback.core.recovery.ResilientFileOutputStream.<init>(ResilientFileOutputStream.java:28) 
     at  at ch.qos.logback.core.FileAppender.openFile(FileAppender.java:149) 
     at  at ch.qos.logback.core.FileAppender.start(FileAppender.java:108) 
     at  at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:96) 
     at  at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:317) 
     at  at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:196) 
     at  at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:182) 
     at  at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62) 
     at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:149) 
     at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:135) 
     at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:99) 
     at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:49) 
     at  at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75) 
     at  at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148) 
     at  at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85) 
     at  at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55) 
     at  at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128) 
     at  at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107) 
     at  at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295) 
     at  at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269) 
     at  at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:156) 
     at  at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132) 
     at  at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:657) 
     at  at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:282) 
     at  at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
     at  at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779) 
     at  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273) 
     at  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895) 
     at  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871) 
     at  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) 
     at  at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958) 
     at  at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1599) 
     at  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
     at  at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
     at  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at  at java.lang.Thread.run(Thread.java:744) 

Могу ли я создать файл журнала только с его именем? И если да, где находится местоположение по умолчанию для файла журнала логов на сервере Tomcat 7?

+0

Наша команда решила использовать переменную системной среды $ {LOG_HOME}, чтобы сохранить местоположение файла журнала после сравнения различных решений. – Jeffrey

ответ

-1

Вы хотите относительный путь. Укажите <file>./testFile3.log</file> Проверьте, где это создается, запустив один раз.

Обратите внимание, что это может быть относительно местоположения, используемого для запуска приложения.

Смежные вопросы