私が追加しました 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)
この例外を解決する方法を教えてください。プロパティファイルをルートフォルダーに配置しようとし、ソースフォルダーに配置しましたが、どちらの場合も上記の例外が発生しました。
変数${file.name}
が正しく置換されていないようです。その結果、log4j.appender.FILE.File
の値はlogs/
になります。そのため、Javaはlogs/
という名前のログファイルを作成しようとしますが、おそらく既存のディレクトリであるため、例外が発生します。
迅速な解決策として、log4j.appender.FILE.File
のような絶対パスでファイルを指すように/tmp/mytest.log
設定を変更します。例外は発生しないはずです。
その後、ランタイム環境で${file.name}
が正しく置き換えられない理由のデバッグに進むことができます。
私はまったく同じ問題を抱えていました。私のために働いた解決策は次のとおりです:単純にこのようにcmd行にプロパティファイルのパスを入れてください:
-Dlog4j.configuration=<FILE_PATH> (ex: log4j.properties)
これがあなたを助けることを願っています
Java.io.FileNotFoundException:ログ(アクセスが拒否されました)
->アプリは「ログ」フォルダに書き込むことができません。 log4j構成とは関係ありません。フォルダーが存在しない場合は作成し、Webアプリが書き込むための十分なアクセス許可を与えます。
このエラーは、指定したアペンダーファイルの場所が現在のユーザーアクセスでは到達できないために発生します。
クイックソリューション、log4j.appender.FILE.Fileの設定を、ログインしている現在のユーザーがアクセスできる場所の絶対パスを使用して、たとえば/ tmp/myapp .log。これでエラーは発生しません。
それがwindow7(私のような)の場合、管理者権限がないとC:ドライブにファイルを書き込めません
log4j.propertiesファイルに別のフォルダーを指定するだけです
ファイルの名前を設定します
log4j.appender.FILE.File = C:\ server\log.out notepad ++で確認できます
ログファイルの場所を別のドライブに変更してください。それが動作します。
これは、ログファイルを作成する許可です。
これはあなたの設定です:
log4j.appender.FILE.File=logs/${file.name}
そして、このエラーが発生しました:
Java.io.FileNotFoundException: logs (Access is denied)
したがって、変数file.name
は設定されず、Javaはディレクトリlogs
に書き込もうとします。
force変数の値${file.name}
このオプションでmavenを呼び出す-D:
mvn clean test -Dfile.name=logfile.log
この問題を防ぐため、ディレクトリ$ {kafka.logs.dir}のlog4j.propertiesファイルのすべての値を自分のディレクトリに変更しました。たとえば、D:/ temp/...
エラーを見てください-'log4j:ERROR setFile(null、false)call failed。 Java.io.FileNotFoundException:ログ(アクセスが拒否されました) '
アクセスが拒否された「ログ」という名前のログファイルがあるようです。つまり、ログを書き込むための十分な権限がありません。 「ログ」ログファイルに書き込み権限を付与してみてください。それが役に立てば幸い。