私は、特定のロギングスキーマを持っています。複数のプログラムをログに記録する必要があるため、ファイル名ではなく日付でソートされます。そのため、たとえば、「戦士」と呼ばれるコンピュータ上で2016年9月27日に私たちのスクリプト起動プログラムによって生成されたログファイルは以下のようなものを配置されることになる。log4j古いログファイルをアーカイブしないで毎日新しいログファイルを自動作成する方法
<root folder>/logs/warrior/2016/09 - Sep/27 - Launcher.log
それは、特定のための正しいログファイルを見つけることになりコンピュータは非常に整理されていますが、非常に迅速です。このロギングスキーマの一部を変更する必要がある場合、私はそうするためのちょっとした揺れの余地があります。可能であれば、私はそれをそのまま保つつもりです。
私が遭遇している問題は、一部のユーザーがプログラムを夜間実行していることです。翌日には、前回のログファイルにすべてのログアクティビティが表示されます。 log4j(現在のバージョン2.6)に、新しい日が発生したことを自動的に検出し、ロギングファイルを28 - Launcher.log
に変更して、上記と同じスキーマを維持する方法はありますか?また、来月のヒット時などに10 - Oct/
フォルダを自動作成するには?
ログファイルは毎日ロールオーバーされるため、log4jをアーカイブする必要はありません。したがって、私は本当にトリガーポリシーを必要としません(サイズベースのものを除いて、 RollingFileAppenderで本当に巨大になります)。ここでは、私はlog4j2.xmlファイルで、これまで持っているものです。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="filename">logs/artdept.log</Property>
<Property name="baseDir">/Volumes/ArtDept/ArtDept/Scripts/sky-artdept/logs</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="MyFile" fileName="${filename}">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
</File>
<RollingFile name="RollFile" fileName="${baseDir}/${env:USER}/${date:yyyy}/${date:MM} - ${date:MMM}/${date:dd} - Launcher.log"
filePattern="${baseDir}/Archives/${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="250 MB" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="RollFile"/>
</Root>
</Loggers>
</Configuration>
私はそれが真夜中でファイルを変更するために取得するには、単純な何かが欠けていると確信しているが、私はそれが何であるかを把握することはできません。
このリンクを使用すると、役立つかもしれません.http://stackoverflow.com/questions/20618527/create-new-log-file-daily-using-log4j – mhasan
ありがとうございます@ mhasan、しかし、私はそこに情報を恐れています現在古くなっています。 'DailyRollingFileAppender'はlog4j(現在は2.6)の最新バージョンには存在しません。また、それがあったとしても、ファイル名に日付を付加するだけであるように見えます。私はログファイルへのパスを通して日付の様々な部分を配置する能力が必要です。例えば、 '2016/09 - Sep/27 - Launcher.log' – Sturm
さて、私はこのための回避策を発見したかもしれません。私はうまくいけばそれをすぐに投稿しますが、それはlog4jの2.7リリースに依存しています。私は[バグ](https://issues.apache.org/jira/browse/LOG4J2-1548?jql=project%20%3D%20LOG4J2%20AND%20text%20~%20cron)に遭遇したメインログファイルが更新されたときに1秒ごとにトリガするアーカイブ。この問題が解決されたら、更新されたlog4j2.xmlファイルを投稿して、どのように私がこれをどのように計画しているか誰もが分かるようにします。 – Sturm