Java logbackログの簡単な使用
説明
logbackはlog 4 jの代わりとして、多くの利点があります。logbackをプロジェクトに適用するには、手順が簡単です。依存するjarパッケージとプロファイルを追加すればいいです。
logback.xmlの主要元素:
属性を定義し、定義した後、後の文は変数を通して参照できます。
ログ出力フォーマット、位置、ファイル分割などを定義します。「logger」または「root」に参照されます。
ログ名と対応するレベルを指定します。nameはパッケージ名、クラス名または単純な文字列であってもよい。パッケージ名またはクラス名の場合、パッケージまたはクラスのログレベルは、ここの設定に対応します。単純な文字列名であれば、get Logger(name)で取得したログは、ここの構成を採用します。
デフォルトで使用するログの設定を指定します。ここの設定はデフォルトで使用します。
使用
logback依存のカバン:
パケット衝突
出現する場合:
No such instance field:'logger 2'
最初はキャッシュをコンパイルする原因だと思っていましたが、rebuildは何度も同じ問題です。
debuggerのevaluateツールを通じて、ロギングFactory.get Logger(「SqlLog」).info(「testtest」)を実行し、また正常であり、コンソールとファイルにログ内容を正確に出力することができます。コードには問題がなく、取得したログガーのインスタンスも正しいということです。
evaluateツールを通じて、logger 2を入力するといつも問題がありますが、loggerを入力しても大丈夫です。logger.infoはエラーが発生します。プロンプトはlog 4 jのカバンです。これはもう説明しました。クラスは最新のものではないです。loggerは修正前に定義されたので、logger 2に変更されました。
ただし、ブレークポイントの場合は、コードラインの位置が乱れていません。文書とは最新のものではないので、ちょっと矛盾しているようです。
最後に、キャッシュの原因を発見しますか?
classファイルを手動でクリアし、再コンパイルして起動し、問題解決します。
どうやら、ideaのrebuildはスペクトルに合わない場合があります。classファイルは最新のものです。
以上がJava logbackログの使用の詳細です。Java logbackログに関する資料は他の関連記事に注目してください。
logbackはlog 4 jの代わりとして、多くの利点があります。logbackをプロジェクトに適用するには、手順が簡単です。依存するjarパッケージとプロファイルを追加すればいいです。
logback.xmlの主要元素:
使用
logback依存のカバン:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>
logback.xmlプロファイルはclassipathに入ればいいです。プログラムは自動的にこのファイルを読みます。
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="3 seconds">
<property name="z_app" value="${z_app:-app}"/>
<property name="SQL_LEVEL" value="DEBUG"/>
<property name="SERVICE_LEVEL" value="DEBUG"/>
<property name="RPC_LEVEL" value="DEBUG"/>
<property name="BOOT_LEVEL" value="DEBUG"/>
<property name="BUF_LEVEL" value="DEBUG"/>
<!-- 09:14:20.256 [main] INFO com.h.db.business.main.Main - asfdasdf -->
<property name="PATTERN" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<property name="SQL_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}Sql.log"/>
<property name="SERVICE_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}Service.log"/>
<property name="RPC_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}RPC.log"/>
<property name="BOOT_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}Boot.log"/>
<property name="BUF_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}Buf.log"/>
<property name="TRACE_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}Trace.log"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>utf-8</charset>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<property name="ROOT_LEVEL" value="DEBUG"/>
<property name="APP_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}.log"/>
<appender name="APP_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<charset>utf-8</charset>
<pattern>${PATTERN}</pattern>
</encoder>
<prudent>false</prudent>
<append>true</append>
<file>${APP_LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${APP_LOG_FILE}.%d{yyyy-MM-dd}-%i.gz</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>15</maxHistory>
<totalSizeCap>200MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- sql -->
<logger name="SqlLog" level="DEBUG" >
<appender-ref ref="APP_LOG" />
<appender-ref ref="CONSOLE" />
</logger>
<!-- -->
<logger name="druid.sql.Connection" level="DEBUG" />
<logger name="org.springframework.jdbc.datasource.CoreDataSourceUtils" level="DEBUG" />
<logger name="org.springframework.jdbc.datasource.DataSourceUtils" level="DEBUG" />
<logger name="org.apache.zookeeper.ClientCnxn" level="info" />
<logger name="org.mongodb.driver.connection" level="info" />
<logger name="org.mongodb.driver.cluster" level="info" />
<logger name="org.apache.zookeeper.Environment" level="ERROR"/>
<logger name="org.apache.curator.framework.recipes.cache.TreeCache" level="debug"/>
<logger name="tk.mybatis.mapper.mapperhelper.MapperTemplate" level="DEBUG"/>
<root level="${ROOT_LEVEL}">
<appender-ref ref="APP_LOG" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
コード:
// LoggerFactory.getLogger(${logger_name}), logger_name logback.xml logger
private static final Logger logger2 = LoggerFactory.getLogger(XX.class);
よくある問題パケット衝突
出現する場合:
org.slf4j.impl.Log4jLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext
または:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/E:/**/WEB-INF/lib/activemq-all-5.10.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/E:/**/WEB-INF/lib/slf4j-simple-1.6.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
衝突があるという意味で、衝突したカバンを削除すればいいです。ロゴ4 j、activemq-allなどのバッグによって、それらを削除します。No such instance field:'logger 2'
最初はキャッシュをコンパイルする原因だと思っていましたが、rebuildは何度も同じ問題です。
debuggerのevaluateツールを通じて、ロギングFactory.get Logger(「SqlLog」).info(「testtest」)を実行し、また正常であり、コンソールとファイルにログ内容を正確に出力することができます。コードには問題がなく、取得したログガーのインスタンスも正しいということです。
evaluateツールを通じて、logger 2を入力するといつも問題がありますが、loggerを入力しても大丈夫です。logger.infoはエラーが発生します。プロンプトはlog 4 jのカバンです。これはもう説明しました。クラスは最新のものではないです。loggerは修正前に定義されたので、logger 2に変更されました。
ただし、ブレークポイントの場合は、コードラインの位置が乱れていません。文書とは最新のものではないので、ちょっと矛盾しているようです。
最後に、キャッシュの原因を発見しますか?
classファイルを手動でクリアし、再コンパイルして起動し、問題解決します。
どうやら、ideaのrebuildはスペクトルに合わない場合があります。classファイルは最新のものです。
以上がJava logbackログの使用の詳細です。Java logbackログに関する資料は他の関連記事に注目してください。