0

ロギング ライブラリとして log4j を使用しています。生成されたログ ファイルを Web アプリケーション内に置きたいので、使用している jar は次のとおりです。

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.4</version>
    </dependency>


    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.4</version>
    </dependency>

以下はlog4j構成です。

log4j.rootLogger=DEBUG, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=mylog.log

log4j.appender.R.MaxFileSize=10000KB

log4j.appender.R.MaxBackupIndex=3

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

# Control/Limit integrated frameworks logging messages
log4j.logger.org.springframework=ERROR

問題: ファイル システム パスを使用するとlog4j.appender.R.File=${user.home}/mylog.log 、ファイルは問題なく正常に作成されますが、次のような相対パスを使用しようとするとlog4j.appender.R.File=mylog.log、ファイルが作成されません。

それを修正する方法を教えてください。

4

2 に答える 2

3

Webアプリケーションについて言及したので、現在の作業ディレクトリは、TOMCAT_HOMEのようなWebコンテナルートになります。したがって、ログファイルのパスは、Webアプリケーションではなく、Webコンテナを基準にしています。

また、ほとんどのWebコンテナは、Webアプリケーションディレクトリへのファイルの書き込みを制限しています。それを行うためのいくつかの構成があるかもしれません-確かではありません。

于 2012-07-02T21:10:50.610 に答える
1

現在の作業ディレクトリの権限を確認してください。Java プロセスを実行しているユーザーが読み取りおよび書き込みアクセス権を持っていることを確認してください。

作業ディレクトリを決定するには、Web アプリケーション コンテキストのクラスからこれを実行します (例: aServletまたは a ServletContextListener)。

System.out.println("Working Directory = " + System.getProperty("user.dir"));
于 2012-07-02T21:03:42.033 に答える