2012-05-21 53 views
22

log4j.propertiesファイルをプロジェクトのソースフォルダに追加しましたが、まだlog4j:エラーが表示されています。ここでエラー:log4jを使用しているときに "setFile(null、false)call failed"が発生しました

.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) 

私が持っているように、この例外を解決する方法を、私に知らせてください。ここ

は私のLog4j.propertiesファイルです私のプロパティファイルをルートフォルダに配置しようとしましたが、今はソースフォルダに置いていますが、どちらの場合も上記の例外があります。

+0

の作品ファイル?では、配備されているlog4j.propertiesの値はここで何ですか? – eis

+0

可能な複製http://stackoverflow.com/questions/21140168/log4jerror-setfilenull-false-call-failed –

答えて

2

java.io.FileNotFoundException: logs (Access is denied)

- >あなたのアプリは「ログ」フォルダに書き込めません。 log4jの設定とは関係ありません。フォルダが存在しない場合は作成し、Webアプリケーションが書き込むための十分なアクセス許可を与えます。

+0

しかし私はログフォルダを私のプロジェクトのソースフォルダに並行して作成しました。 –

+0

1)アプリケーションにはフォルダへの書き込み権限がありますか? 2)フォルダは正しい場所にありますか?アプリがどこから実行されたかに関連している必要があります。 – eis

+0

はい、すべてがあり、同じlog4j.propertiesファイルが最後の金曜日まで働いていたようです。私はlog4j.appender.FILE.Fileのパスでのみ変更を行い、その後は動作を停止します。次に私のbinをクリアし、log4jをrootからsourceフォルダに置きます。 log4jはクラスパスにロードするプロパティファイルが必要です。 –

0

エラーを見てください - 'log4j:ERROR setFile(null、false)呼び出しが失敗しました。 java.io.FileNotFoundException:logs(アクセスが拒否されました) '

「ログ」という名前のログファイルがあり、アクセスが拒否された、つまりログを書き込むための十分な権限がありません。 'ログ'ログファイルに書き込み権限を与えてみてください。それが役に立てば幸い。

4

私はまったく同じ問題を抱えていました。ここでは私のために働いたソリューションです:単にあなたの特性は、CMDラインでこのようにパスをファイル置く:これは私が変数${file.name}が正しく置換されていないと思われるあなた

+1

魅力的な、10倍のように働いた! –

22

を助ける

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

ホープ。その結果、log4j.appender.FILE.Fileの値はlogs/になります。そのため、Javaはlogs/という名前のログファイルを作成しようとしますが、おそらく既存のディレクトリであるため、例外が発生します。

log4j.appender.FILE.Fileの設定を絶対パスでファイルを指すように変更してください(例:/tmp/mytest.log)。例外はありません。

その後、ランタイム環境で${file.name}が正しく置き換えられない理由をデバッグすることができます。

+0

これは、アプリケーションに複数のログファイルがある状況では便利です。 –

0

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

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

1

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

がちょうどlog4j.propertiesで別のフォルダを与えるには、

Set the name of the file

log4j.appender.FILEを提出します。ファイル= C:\サーバー\ログ。あなたはsudoの(スーパーユーザ)を使用してコマンドを実行してみ++メモ帳で

-3

を見ることができますから、これは私のために働いた:)
ラン:スーパーユーザーのパスワードを入力するよりも後の$ sudoは
をyour_command。 Thats All ..

+1

共有システム上にこのような優先順位を設定できないことがあります –

1

このエラーは、あなたが提供したアペンダーファイルの場所が現在のユーザーアクセスでは到達できないために来ています。

クイックソリューションは、たとえば/tmp/myapp.logのために、場所はあなたがログインしている現在のユーザーに到達可能である絶対パスを使用してファイルを指すように設定log4j.appender.FILE.Fileを変更します。今あなたはエラーを起こすべきではありません。

2

これが最終ではない私は、「ログ」フォルダへの書き込み権限を追加し、それがlog4j.appender.FILE.File =ログ/ $ {} file.name 私のため

add write permission

関連する問題