2016-04-13 17 views
1

私のアプリケーションでは現在Spring Bootを使用していますが、これはデフォルトのログ実装としてLogbackを使用しています。Spring Bootでログファイルにタイムスタンプを追加する?

は現在、私は、次のしている私のapplications.propertiesファイルに:私の出力フォルダ内spring.log

#some other properties 

#logging details 
logging.path= path/to/my/log/folder 

これは、現在のファイルに記録します。

タイムスタンプと、作成日時が含まれるように、このファイルを変更するにはどうすればよいですか?

例: - "私のアプリケーションログ-DATE-TIME.log"

答えて

0

は.propertiesファイル形式の設定を削除し、logbackの適切なを使用1 - logback.xmlこのためにSpring Bootは完全に準備されています!ここでは例です:

<property name="logPattern" value="%d %-5level %logger{35} - %msg%n"/> 
<property name="logEncoding" value="UTF-8"/> 
<property name="logDirectory" value="logs"/> 

<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${logDirectory}/myapplication.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <fileNamePattern>${logDirectory}/myapplication_%d{yyyy-MM-dd}.%i.log</fileNamePattern> 
     <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
      <maxFileSize>30MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
    </rollingPolicy> 
    <encoder> 
     <charset>${logEncoding}</charset> 
     <pattern>${logPattern}</pattern> 
    </encoder> 
</appender> 

<logger name="org.springframework" level="warn"/> 

<root level="INFO"> 
    <appender-ref ref="fileAppender"/> 
</root> 

これは単なるログファイルにタイムスタンプを追加しませんが、同様にログローテーションをお届けします(例えば、それはまで古いログをしておこう彼らは特定のサイズに達するなど)。

+0

ありがとう、私は私のプロジェクトでこれを置くのですか? – java123999

+0

あなたがmavenベースのプロジェクトを持っていると仮定すると、logback.xmlというファイルを作成してsrc/main/resourcesの下に置いて、そのファイルに内容をコピーします。 また、私は間違いを犯し、ここでファイル全体をコピーしませんでした。でファイルを開始し、で終了して適切なXMLにします。 –

+0

このリンクをチェックして、ログバックの設定に関するいくつかの完全な例を確認してください。 http://www.mkyong.com/logging/logback-xml-example/ –

0

アペンダで、これを追加しよう:

<layout class="ch.qos.logback.classic.PatternLayout"> 
      <Pattern> 
       %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n 
      </Pattern>  </layout> 
+0

アペンダーの意味がわかりません。おかげで – java123999

0

これは正しい方法です。 Springブートのproperty supportを使用して、application.propertiesファイルをカスタマイズします。あなたのバッキングクラスの一方で

// application.properties file 
app.name=appname 
logging.path=logpath 
logging.file=${appname}-{timestamp}.log 

、プロパティ値を取得するには、URLヘルパーを作成することができます。

/** 
* Helper class to get configured urls. 
*/ 
@Component 
public class UrlHelper { 

    @Inject 
    private Environment env; 

    private static final String LOGGING_TIMESTAMP = "{timestamp}"; 

private static String loggingFileUrlPattern; 

/** 
    * Initializes properties. 
    */ 
    @PostConstruct 
    public void initProperties() { 

     loggingFileUrlPattern = env.getRequiredProperty("logging.file"); 
    } 

/** 
    * Formats the loggin Url pattern application property with the current 
    * timestamp 
    * 
    * @param timestamp 
    *   current timestamp. 
    * @return The complete logging file url. 
    */ 

    public static String buildLoggingFileUrl(String timestamp) { 
     return loggingFileUrlPattern.replace(LOGGING_FILE_URL, timestamp); 
    } 
} 

はそれが役に立てば幸い!

関連する問題