• ベストアンサー

Log4jでログ生成時の日時付きファイル名

Javaプログラムの実行履歴をLog4jに記録させたいのですが、 このプログラムは常に動いているものではなく、月に2回バッチで動かすのと、 DBからデータが必要になった時に手動で実行(同じく月2回程度)するものです。 プログラムを実行したタイミングでログファイルを新たに生成して、且つ ファイル名のプレフィックス(orポストフィックス)にログファイル生成時の日時を付加したいのですが、 log4j.xmlにはどのように記述すれば良いでしょうか?? (別途Javaファイルが必要であればそれも。) また、上記の事を説明しているサイトのURLなどあれば教えてください。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちは。 org.apache.log4j.DailyRollingFileAppender を使いましょう。 DatePattern='_'yyyy-MM-dd とすると、 XXXX.log_yyyy-mm-dd みたいな感じになります。

関連するQ&A

  • Javaでlog4jを使ってログ出力を行っています。

    Javaでlog4jを使ってログ出力を行っています。 環境は以下の通りです。 j2sdk1.4.2 log4j1.2.8 log4j.xml内で指定したログファイル(test.log)を別のアプリで開いた状態で Javaプログラムを実行するとコンソールに以下のエラーが出力されます。 【エラー発生処理】 DOMConfiturator.configure(log4j.xml); 【エラー内容】 log4j:ERROR setFile(null, true) call failed java.io.FileNotFoundException : test.log(プロセスはファイルにアクセスできません。 別のプロセスが使用中です。) ファイルを開いているために書き込めず、エラーになってしまうのは良いのですが、 ログを出力しないだけで処理自体は続行してしまいます。 (ログを書き込めなかったらそこで処理を終了したいです。) 「書き込めなかった場合に例外をcatchする」等のことは可能でしょうか?

    • ベストアンサー
    • Java
  • 日付付きのログファイル名

    バッチのログファイルを日付をつけて保存するようにしようと思っています。 ----------------------------------------------- set DATE=%date:~0,4%%date:~5,2%%date:~8,2% set logfile=c:\opt\BackupTools\log\BACKUP_%DATE%.log echo メッセージ >>%logfile% ----------------------------------------------- 1回目に実行時には期待通りBACKUP_20060909.logのようなファイルが出来たりしますが、2回目の実行になると出来たファイルに上書きされないし、新しく生成されるログファイルはBACKUP_2006099.logだったり、BACKUP_2006.logになったりしますが、何が原因なのでしょうか。

  • log4j.xmlファイルの読込で。。。

    log4Jの設定ファイルの読込を DOMConfigurator.configure("log4j.xml"); とJavaで記述していますが以下のエラーが表示されます。 log4j:ERROR Could not parse file [log4j.xml]. java.io.FileNotFoundException: C:\WINDOWS\System32\log4j.xml (指定されたファイルが見つかりません。) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source) at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) atorg.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) at org.apache.log4j.xml.DOMConfigurator$1.parse(DOMConfigurator.java:598) at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:711) at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:604) at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:733) at HttpTestServlet.doPost(HttpTestServlet.java:31) どこに原因があるのかわかりませんので、 どなたかわかる方がいらっしゃいましたらご指摘願います。

  • jarファイルとして作成されたJavaのログ出力

    お世話になっております。 ご存知の方がいらしたら教えて下さい。 Javaで作成されたバッチプログラムをWinodws2008サーバーの タスクスケジューラーから呼び出してバッチ処理を実行したいと思っています。 このプログラムにはLog4j(xml)で、ログを出力するようにしているのですが、 実行するとログが出力されません。 どのようにしたらログが出力されるのか教えてください。 -環境詳細- ・javaプログラム(Hoge.java)  ・main メソッドにDBアクセスするプログラムが記述されています  ・ログはlog.info("文字列");のように記述しています  ・このHoge.javaを Hoge_batch.jarとしてjarファイル化しています ・log4j  以下のように記述しています。 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- コンソール出力 --> <appender name="Console" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy/MMM/dd HH:mm:ss} %-5p (%c{1}.%M():%L) %m%n"/> </layout> </appender> <!-- 操作ログ --> <appender name="File" class="org.apache.log4j.DailyRollingFileAppender"> <param name="Threshold" value="DEBUG" /> <param name="File" value="c:\log\trace.log" /> <param name="DatePattern" value="'.'yyyy-MM-dd" /> <param name="Append" value="true" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy/MM/dd HH:mm:ss} %-5p [%t] (%c{1}.%M:%L) %m%n"/> </layout> </appender> <root> <level value="info" /> <appender-ref ref="File" /> <appender-ref ref="Error" /> </root> </log4j:configuration> ・Javaの呼び出し  windows2008サーバーから、パワーシェルを呼び出し、パワーシェル内で call.batを呼び出し、  call.bat の中で「java -cp Hoge_batch.jar jp.co.company.batch.hoge」として呼び出しています。 ・プログラムの階層構造  Hoge.jar log4j.xml jp co company batch Hoge.java Hoge.javaの処理は正常に動いています。 ログファイルを c:\log\ に出力したいのですが、出力されません。 ご存じの方がいらしたらお手数ですが、教えてください。

    • ベストアンサー
    • Java
  • Log4jのインストール

    Java初心者です。Log4Jをダウンロードして、サンプルコードを実行しようとしているのですが、うまく行きません。インストール手順が何か足りないのでしょうか。 環境: OS=MacOSX Java-version=1.5.0_16 (1)Log4jをダウンロードし、解凍して、そのうちファイル名=log4j-1.2.15.jarをソースと同じディレクトリに置く (2)ウェブで探してきたテスト用のサンプルコード(下記参照)をlog4J.javaというファイル名で作成 (3)CLASSPATH=xxx.xxx(ソースのある絶対パス)/log4j-1.2.15.jar; export CLASSPATH を実行してクラスパスを通す (4)javac log4J.javaでコンパイル(エラーは出ず) (5)java log4Jを実行 Exception in thread "main" java.lang.NoClassDefFoundError: log4J 例外エラー発生。なぜだかお分かりでしょうか? import org.apache.log4j.*; public class log4J { static Logger logger = Logger.getLogger(log4J.class); public static void main(String[] args) { BasicConfigurator.configure(); logger.debug("Hello world."); logger.info("What a beatiful day."); } }

    • ベストアンサー
    • Java
  • log4jを使用し、JAVAのバッチプログラムを作っております。

    log4jを使用し、JAVAのバッチプログラムを作っております。 ○ディレクトリ構成は、 test - pack1   - ※1     - pack2   - ※2     - resources - ※3     - lib    - ※4  ※1:メインプログラム  ※2:この中でPropertyConfiguratorを使用し、log4j.propathiesを読み込んでいる。 ( PropertyConfigurator.configure("resources/log4j.properties"); )  ※3:log4j.properties  ※4:log4j-1.2.8.jar ○悩み testのディレクトリから java -cp .;lib\log4j-1.2.8.jar pack1.Aaa の場合、うまくいくのですが、testの一つ上のフォルダから java -cp test;test\lib\log4j-1.2.8.jar pack1.Aaa  と行うと以下のエラーが出ます。 log4j:ERROR Could not read configuration file [resources/log4j.properties]. java.io.FileNotFoundException: resources\log4j.properties (指定されたパスが見つかりません。) at java.io.FileInputStream.open(Native Method)         ・        ・        ・ ○質問 よくネットで原因を検索するとパスを通せば問題ないと書かれていますが、どのようにパスを通せばよいのでしょうか?

    • ベストアンサー
    • Java
  • Log4jで機能毎に別ファイルへ出力する方法

    こんにちは。 Log4jで複数のログファイルを出力する方法について質問させてください。 やりたい事としては・・・ WebアプリケーションからLog4jを使用して、ログ出力する際に サブアプリAからはsub-A.log サブアプリBからはsub-B.log などとログファイルを出力させたいと思っています。 Log4j.xmlでappenderタグを複数定義すれば良いだけかも知れませんが Java側でどうやって別のログオブジェクトを生成するのかが分かりません。 どの様にして別のオブジェクトの取得が出来るのでしょうか? それとも見当違いのことを質問していますでしょうか? よろしくご教授ください。 これが実現できれば… SQLだけのログ(DBバックアップ用) 例外だけのログ(監視用) などの用途に使えるのかと思っています。 よろしくお願いします。

  • PHPでファイル生成時のファイル名

    IE:7.0.5730.13 PHP:4.3.9 PHPでXMLファイルを作成し表示させるプログラムを以下のようにして書きました。 「header("Content-Type: text/xml; charset=UTF-8");」 それで、その表示しているファイルを保存するときに、「a.xml」のように保存したいと思い、 「header("Content-Disposition: inline; filename=\"a.xml\"");」のようにソースに付け加えました。 実行結果は、HTMLのリンクで右クリックで「名前をつけて保存」なら「a.xml」と表示され、 XMLデータ表示時に、「ファイル→名前を付けて保存」だとPHPのファイル名になってしまいます。 どのようにしたら、どちらでも「a.xml」と表示されるのでしょうか? わかる方がおられたらご教示お願いします。 それと、こちらはついで程度なのですが、 Firefoxだとどちらもphpのファイル名になってしまってます。 Firefoxでの場合も出来れば教えてもらえないでしょうか?

    • 締切済み
    • PHP
  • ログオフ時にファイルを実行について

    OSは、Windows2000を使っています。キャッシュのデーターやIEの履歴や最近使ったファイルなどをログオフした時にバッチ処理として削除したいのです。できれば、ソフトは使いたくないです。ログオフ時にファイルを実行する方法はありますか?それかログオフのバッチの作り方などよろしければ教えてください。よろしくお願いします。

  • java log4jの環境設定

    調べてみたのですが、参考になるページが見当たらなかったので(私が理解できなかっただけかもしれませんが。。) ご質問させていただきます。 表題の件です。javaのサーブレットを用いてログ出力する為にlog4jを使用しています。 そのため、log4j.xmlにファイルの出力先やらなんやらを記述しています。(これが通常だと思います) tomcatのWEBアプリケーションパッケージですので、DB接続等の設定は「META-INF/context.xml」に記述(Javaアプリ側で名前解決してDatasourceとして取得)しています。 上記からDB接続情報、ログの出力先情報はそれぞれ別ファイル(XML)から取得していますが、環境依存する値なので、編集するならひとつのファイルから行いたいです。 できれば、log4jのファイル出力先情報等をcontext.xmlにて記述して解決したいです。 (理由:tomcat6/servlet2.5を使用しており、tomcat6のdbcpを使用してコネクションプーリングしている為、DB接続の方法は変更したくない為) 以上、ご存知の方ご教授お願いできますでしょうか。

    • ベストアンサー
    • Java

専門家に質問してみよう