37

プロジェクトのソース フォルダーにファイルを追加しましlog4j.propertiesたが、まだ log4j:error が発生します。

ここに私の Log4j.properties ファイルがあります:

    .rootCategory=DEBUG, R, O
    # Stdout
    log4j.appender.O=org.apache.log4j.ConsoleAppender
    log4j.appender.O=log44j.log
    # File
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=log4j.log

    # Control the maximum log file size
    log4j.appender.R.MaxFileSize=100KB

    # Archive log files (one backup file here)
    log4j.appender.R.MaxBackupIndex=1

    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.O.layout=org.apache.log4j.PatternLayout

    log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
    log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n

    # Define the root logger with appender file
    logDir = ../logs
    log4j.rootLogger = DEBUG, FILE

    # Define the file appender
    log4j.appender.FILE=org.apache.log4j.FileAppender
    log4j.appender.FILE.File=logs/${file.name}
    log4j.appender.FILE.Append=false

    # Define the layout for file appender
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.conversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

これが私が得ているJava例外です:

log4j:ERROR setFile(null,false) call failed.
java.io.FileNotFoundException: logs (Access is denied)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:116)
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
    at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
    at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
    at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
    at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:809)
    at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:735)
    at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:615)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:502)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:547)
    at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:483)
    at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
    at org.apache.log4j.Logger.getLogger(Logger.java:104)
    at lib.Dashboard.Reports.<init>(Reports.java:34)
    at testcases.AmazonDashboard.TC_DB17.main(TC_DB17.java:54)
AmazonDashboardTC_DB17Exception in thread "main" java.lang.NullPointerException
    at testcases.AmazonDashboard.TC_DB17.main(TC_DB17.java:131)

この例外を解決する方法を教えてください。プロパティ ファイルをルート フォルダーに配置しようとしましたが、ソース フォルダーに配置しましたが、どちらの場合も上記の例外が発生しました。

4

10 に答える 10

5

私はまったく同じ問題を抱えていました。これが私にとってうまくいった解決策です:プロパティファイルのパスを次のようにcmd行に入れるだけです:

-Dlog4j.configuration=<FILE_PATH>  (ex: log4j.properties)

これがあなたを助けることを願っています

于 2013-05-27T09:04:49.797 に答える
2

「logs」フォルダーに書き込み権限を追加するだけで機能します

書き込み権限を追加

于 2015-10-04T17:38:51.363 に答える
2

このエラーは、指定したアペンダー ファイルの場所に現在のユーザー アクセスでアクセスできないために発生しています。

クイックソリューション、 log4j.appender.FILE.File 設定を変更して、ログインしている現在のユーザーに到達可能な絶対パスを使用してファイルを指すようにします (例: /tmp/myapp.log )。これでエラーは発生しなくなりました。

于 2015-09-10T11:54:03.627 に答える
1

それがwindow7の場合(私のように)、管理者権限がないとC:ドライブにファイルを書き込むことができません

log4j.properties ファイルに別のフォルダーを指定するだけです

ファイルの名前を設定する

log4j.appender.FILE.File=C:\server\log.out メモ帳++で確認できます

于 2014-03-28T20:30:22.810 に答える
0

ログ ファイルの場所を別のドライブに変更してください。それが動作します。

これは、ログ ファイルを作成する権限です。

于 2014-01-21T21:49:48.357 に答える
0

この問題を防ぐために、ディレクトリ ${kafka.logs.dir} の log4j.properties ファイルのすべての値を自分のディレクトリに変更しました。たとえば、D:/temp/...

于 2018-07-23T19:56:21.687 に答える
-4

sudo(Super User) でコマンドを実行してみてください。これは私にとってはうまくいきました:)
実行: $ sudo your_command
その後、スーパーユーザーのパスワードを入力します。それで全部です..

于 2015-03-23T05:13:29.503 に答える