世の中にはそれが分からない人だけがいて、不可能な道などありません。
1. ログの概要
ログを通じて、実行中のプログラムのプロセスと詳細を表示できます。
出力ステートメントの欠点:
- 情報はコンソールにのみ表示できます。
- 他の場所 (ファイル、データベース) にログを記録することはできません。
- 記録した情報を取り消したい場合は、ソースコードを修正して完成させる必要があります。
ロギングテクノロジーの利点:
- システム実行情報は、指定した場所 (コンソール、ファイル、データベース) に選択的に記録できます。
- ソース コードを変更することなく、いつでもスイッチの形式でログを記録するかどうかを制御できます。
建築:
2. Logback ログ フレームワーク
Logback は、log4j の創設者によって設計されたもう 1 つのオープン ソース ログ コンポーネントであり、log4j よりも優れたパフォーマンスを備えています。
公式サイト:https://logback.qos.ch/index.html
Logback は、「slf4j ログ仕様」に基づいたフレームワークです。
Logback は、logback-core、logback-classic、logback-access の 3 つの技術モジュールに分かれています。
- logback-core モジュールは他の 2 つのモジュールの基礎を築くものであり、必須です。
- logback-classi は log4j の改良版であり、slf4j API を完全に実装しています。
- logback-access モジュールは、Tomcat や Jetty などのサーブレット コンテナと統合して、HTTP アクセス ログ機能を提供します。
Logback を使用するにはどのモジュールが必要ですか?またその機能は何ですか?
- slf4j-api: ロギング仕様。
- logback-core: 基本モジュール。
- logback-classic: log4j の改良版であり、slf4j APl を完全に実装しています。
3. ログバックによるクイック スタート
使用手順は次のとおりです。
1. プロジェクトの下に新しいフォルダー lib を作成し、logback 関連の jar パッケージをフォルダーにインポートして、プロジェクトの依存関係ライブラリに追加します。
「プロジェクト構造」-「ライブラリ」で追加された jar パッケージを表示します。
2. Logback のコア構成ファイルを構成するログバック.xmlsrc ディレクトリ (ソースコードが格納されているディレクトリ) に直接コピーします。
ログバック.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--
CONSOLE :表示当前的日志信息是可以输出到控制台中
-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- 输出流对象默认是System.out,改为System.err -->
<target>System.out</target>
<encoder>
<!-- 日志输出格式:
%d{yyyy-MM-dd HH:mm:ss.SSS} 表示日期时间,
%-5level 取日志级别(debug、info、error等等),
%c 取类(在哪个类上面打印日志),
%thread 表示线程名(在哪个方法执行),
%msg 取日志信息,
%n 是换行符 不会用就去百度一下logback的日志格式
-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}[%-5level] %c [%thread] :%msg%n</pattern>
</encoder>
</appender>
<!-- FILE:表示将日志记录到指定文件中 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<!-- 日志文件输出的内容格式 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}-%msg%n</pattern>
<!-- 日志文件编码utf-8 -->
<charset>utf-8</charset>
</encoder>
<!-- 日志输出路径 -->
<file>E:/Code/MyProject/java-study/JavaSE/helloworld-java/out/data.log</file>
<!-- 指定日志文件拆分和压缩规则 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 通过指定压缩文件的名称,来确定分割文件方式 -->
<fileNamePattern>E:/Code/MyProject/java-study/JavaSE/helloworld-java/out/data-%d{yyyy-MMdd}.log.zip
</fileNamePattern>
<!-- 文件拆分大小 -->
<maxFileSize>1MB</maxFileSize>
</rollingPolicy>
</appender>
<!--
level:用来设置打印级别,大小写无关:TRACE,DEBUG,INFO,WARN,ERROR,ALL和OFF,默认debug
TRACE < DEBUG < INFO < WARN < ERROR,如果日志级别是info,表示大于等于info级别的日志
<root>可以包含零个或多个<appender-ref>元素,表示当前日志在哪个位置下输出。
-->
<root level="ALL">
<!-- 注意:如果这里不配置关联打印位置,该位置将不会记录日志 -->
<appender-ref ref="CONSOLE"/> <!--控制台打印日志-->
<appender-ref ref="FILE"/> <!--文件打印日志-->
</root>
</configuration>
3. コード内のログ オブジェクトを取得します。
public static final Logger LOGGER= LoggerFactory.getLogger("要记录的类对象");
4. Logback設定の詳細説明
Logback ログ システムの機能は、コア構成ファイル logback.xml を通じて制御されます。
出力場所の設定
-
ログ情報の出力場所や詳細な形式は、 logback.xml のタグで設定できます
<append>
。 -
通常、ログ出力場所は 2 つ設定できます。1 つはコンソール、もう 1 つはシステム ファイルです。
コンソールへの構成出力:
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
システムファイルへの設定出力:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
最後に、印刷レベルで出力場所を設定します。
<root level="ALL">
<!-- 注意:如果这里不配置关联打印位置,该位置将不会记录日志 -->
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
ログレベルの設定
一部のエラー ログ情報のみを記録したい場合、またはシステムがオンラインになった後はログを記録したくない場合はどうすればよいですか?
-
ログ出力レベルを設定することで、どのログ情報を出力するか、出力しないかを制御できます。
-
Logback ログ レベル: TRACE < DEBUG < INFO < WARN < ERROR ; デフォルト レベルは、そのメソッドに対応するデバッグ (大文字と小文字の区別は無視) です。
-
日次レベル機能:システム内のどのレベルのログを出力できるかを制御し、設定したレベル以上のログ情報のみを出力する機能です。
-
ALL と OFF はそれぞれ、すべてのログ情報をオンにし、すべてのログ情報をオフにします。
-
具体的には、
<root level="INFO">
ラベルのlevel属性にログレベルを設定します。(すべて、オフ、情報、デバッグ、エラーなど)