2016-11-12 67 views
2

我试图将log4j2日志保存到用户主文件夹,因为用户没有权限编写应用程序的安装位置。Log4j2登录到用户主文件夹

这是我的log4j设置的相关部分。不幸的是,它不能解析user.home,所以它会创建运行应用程序的文件夹$ user.home。

<?xml version="1.0" encoding="UTF-8"?> 
<configuration name="defaultConfiguration" status="warn" strict="true" monitorInterval="270"> 
    <properties>   
     <property name="patternlayout">%d{dd/MM/yyyy HH:mm:ss} %5p %c{1}:%L - %m%n 
     </property> 
     <property name="filename">${user.home}/niro/logs/niroDesk.log</property> 
     <property name="filenamePattern">${user.home}/niro/logs/niroDesk.log-%d{yyyy-MM-dd}.log.gz 
     </property> 
    </properties> 

    <appenders> 
     <appender name="Console" type="Console" target="SYSTEM_OUT"> 
      <layout type="PatternLayout" pattern="${patternlayout}" /> 
     </appender> 

     <!-- Log su file ogni giorno, e mantenimento degli ultimi 5 files --> 
     <RollingFile name="File" fileName="${filename}" filePattern="${filenamePattern}" bufferedIO="true" immediateFlush="true" append="true"> 
      <PatternLayout pattern="${patternlayout}" /> 
      <Policies> 
       <TimeBasedTriggeringPolicy /> 
      </Policies> 
      <DefaultRolloverStrategy> 
       <Delete basePath="${user.home}/niro/logs" maxDepth="2"> 
        <IfFileName glob="niroDesk*.log.gz" /> 
        <IfLastModified age="7d" /> 
       </Delete> 
      </DefaultRolloverStrategy> 
     </RollingFile> 

     <appender name="AsyncFile" type="async" blocking="true" bufferSize="128"> 
      <appender-ref ref="File" /> 
     </appender> 
    </appenders> 
    <loggers> 
     <root level="error"> 
      <appender-ref ref="Console" /> 
      <appender-ref ref="AsyncFile" /> 
     </root> 
     <logger level="warn" name="org.springframework" additivity="false"> 
      <appender-ref ref="Console" /> 
      <appender-ref ref="AsyncFile" /> 
     </logger> 
    </loggers> 
</configuration> 


%d {DD/MM/YYYY HH:MM:SS}%5P%C {1}:%L - %米%N $ {的user.home} /尼鲁/logs/niroDesk.log $ {}的user.home {/niro/logs/niroDesk.log-%d YYYY-MM-DD} .log.gz

<appenders> 
    <appender name="Console" type="Console" target="SYSTEM_OUT"> 
     <layout type="PatternLayout" pattern="${patternlayout}" /> 
    </appender> 

    <!-- Log su file ogni giorno, e mantenimento degli ultimi 5 files --> 
    <RollingFile name="File" fileName="${filename}" filePattern="${filenamePattern}" bufferedIO="true" immediateFlush="true" append="true"> 
     <PatternLayout pattern="${patternlayout}" /> 
     <Policies> 
      <TimeBasedTriggeringPolicy /> 
     </Policies> 
     <DefaultRolloverStrategy> 
      <Delete basePath="${user.home}/niro/logs" maxDepth="2"> 
       <IfFileName glob="niroDesk*.log.gz" /> 
       <IfLastModified age="7d" /> 
      </Delete> 
     </DefaultRolloverStrategy> 
    </RollingFile> 

    <appender name="AsyncFile" type="async" blocking="true" bufferSize="128"> 
     <appender-ref ref="File" /> 
    </appender> 
</appenders> 
<loggers> 
    <root level="error"> 
     <appender-ref ref="Console" /> 
     <appender-ref ref="AsyncFile" /> 
    </root> 
    <logger level="warn" name="org.springframework" additivity="false"> 
     <appender-ref ref="Console" /> 
     <appender-ref ref="AsyncFile" /> 
    </logger> 
</loggers> 

有一种方式解决这个问题?

回答

4

我解决了这个问题。您应该使用${sys:user.home}而不是${user.home}