"send hello"
-> receive from socketなどのユーザーコマンドを介してソケットとの間でデータを送受信する単純なコンソールアプリケーションを作成してい"hello"
ます。使用可能なコマンドの 1 つは logLevel(ALL|WARN|DEBUG|etc.)
である必要があります。これにより、ユーザーは、アプリケーション全体で使用している Log4J ロガーのログ レベルを設定できます。
今、プロパティ ファイルで 2 つの Appender を指定しました。
# Root logger option
log4j.rootLogger=INFO, file, stdout
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./logs/client.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# info and above messages are printed to stdout
log4j.appender.stdout.Threshold=INFO
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
ここでの私の目標は、すべてのログ エントリを任意のレベルからログ ファイルに送信することですが、ユーザーが現在 stdout に設定している特定のログ レベルに一致するログ エントリのみを送信することです。サンプル ワークフローは次のようになります。
> INFO: current log level is INFO and above.
> send hello
> INFO: sending hello to server
> INFO: receiving "hello" from server
> logLevel WARN
> INFO: log level set to warn
> send hello
> # no info here, but its still sent to the logfile