{"id":31443,"date":"2023-02-16T11:31:26","date_gmt":"2023-10-31T07:28:04","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/"},"modified":"2024-04-29T14:50:17","modified_gmt":"2024-04-29T06:50:17","slug":"%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/","title":{"rendered":"\u5173\u4e8eJava\u7684\u65e5\u5fd7\u8f93\u51fa"},"content":{"rendered":"<h1>1. \u65e5\u5fd7\u95e8\u9762\u5e93<\/h1>\n<p>\u5728log4j\u4e4b\u540e\uff0c\u6807\u51c6\u7684java.util.logging\u88ab\u521b\u5efa\u4e86\uff0c\u4f46\u662f\u7531\u4e8elog4j\u66f4\u6613\u4e8e\u4f7f\u7528\uff0c\u5b83\u5e76\u4e0d\u5b8c\u5168\u666e\u53ca\u3002<br \/>\n\u56e0\u6b64\u9700\u8981\u4e00\u4e2a\u4e0d\u4f9d\u8d56\u4e8e\u7279\u5b9a\u65e5\u5fd7\u5e93\u7684\u63a5\u53e3\u3002<br \/>\n\u5f53\u6bcf\u4e2a\u5e93\u90fd\u6709\u4e0d\u540c\u7684\u65e5\u5fd7\u5e93\u65f6\uff0c\u5c06\u65e5\u5fd7\u8bb0\u5f55\u5230\u4e00\u4e2a\u6587\u4ef6\u53d8\u5f97\u5f88\u56f0\u96be\uff0c\u6240\u4ee5\u57fa\u672c\u4e0a\u6700\u597d\u4f7f\u7528SLF4J\u3002<\/p>\n<h2>1-1. SLF4J\uff08\u7b80\u5355\u65e5\u5fd7\u5916\u89c2 for Java\uff09<\/h2>\n<p>SLF4J + logback\u6216SLF4J + Log4j2\u7684\u914d\u7f6e\u4f3c\u4e4e\u5f88\u5e38\u89c1\u3002<br \/>\n\u8fd9\u4f3c\u4e4e\u662f\u4e3a\u4e86\u89e3\u51b3\u4e0d\u6613\u4f7f\u7528\u7684Commons Logging\u800c\u521b\u5efa\u7684\uff0c\u5982\u679c\u6ca1\u6709\u4f7f\u7528SLF4J\u7684\u7406\u7531\uff0c\u4f3c\u4e4e\u4f7f\u7528\u5b83\u662f\u4e2a\u4e0d\u9519\u7684\u9009\u62e9\u3002<br \/>\n\u8fd9\u4e2a\u8bb8\u53ef\u8bc1\u662fMIT\uff1f<\/p>\n<h3>\u5fc5\u5907\u7684JAR<\/h3>\n<p>API (\u5fc5\u987b)\uff1aslf4j-api-*.jar<br \/>\n\u65e5\u5fd7\u5b9e\u73b0\u7684\u7ed1\u5b9a(\u4efb\u9009\u5176\u4e00)<br \/>\nLog4j\uff1aslf4j-log4j12-*.jar<br \/>\nLog4j2\uff1alog4j-slf4j-impl-*.jar<br \/>\nLogback\uff1alogback-classic-*.jar<br \/>\njava.util.logging\uff1aslf4j-jdk14-*.jar<\/p>\n<h3>1-1-1. \u9002\u914d\u5668\u3001\u6865\u63a5\u5668<\/h3>\n<p>jcl\u4ee3\u8868\u7740Jakarta Commons Logging\uff0cjul\u4ee3\u8868\u7740java.util.logging\u3002<\/p>\n<h3>1-1-2. \u53ef\u53c2\u8003\u7684\u7f51\u7ad9\u3002<\/h3>\n<h2>1-2. \u516c\u5171\u65e5\u5fd7\u8bb0\u5f55<\/h2>\n<p>Commons Logging\u548cJDK\u6807\u51c6\u7684\u65e5\u5fd7\u8bb0\u5f55\u793a\u4f8b<\/p>\n<h3>\u4e00\u5bf9\u4e00\u5bfc\u5f15<\/h3>\n<pre class=\"post-pre\"><code><span class=\"c\">&lt;!-- https:\/\/mvnrepository.com\/artifact\/commons-logging\/commons-logging --&gt;<\/span>\r\n<span class=\"nt\">&lt;dependency&gt;<\/span>\r\n    <span class=\"nt\">&lt;groupId&gt;<\/span>commons-logging<span class=\"nt\">&lt;\/groupId&gt;<\/span>\r\n    <span class=\"nt\">&lt;artifactId&gt;<\/span>commons-logging<span class=\"nt\">&lt;\/artifactId&gt;<\/span>\r\n    <span class=\"nt\">&lt;version&gt;<\/span>1.2<span class=\"nt\">&lt;\/version&gt;<\/span>\r\n<span class=\"nt\">&lt;\/dependency&gt;<\/span>\r\n\r\n<\/code><\/pre>\n<h3>1-2-2. \u5c5e\u6027\u6587\u4ef6<\/h3>\n<pre class=\"post-pre\"><code><span class=\"py\">handlers<\/span><span class=\"p\">=<\/span><span class=\"s\">java.util.logging.ConsoleHandler, java.util.logging.FileHandler<\/span>\r\n\r\n<span class=\"py\">.level<\/span><span class=\"p\">=<\/span><span class=\"s\">FINEST<\/span>\r\n\r\n<span class=\"c\"># FileHandler\u306e\u8a2d\u5b9a\r\n<\/span><span class=\"py\">java.util.logging.FileHandler.pattern<\/span><span class=\"p\">=<\/span><span class=\"s\">C:\/sample\/sample.log<\/span>\r\n<span class=\"py\">java.util.logging.FileHandler.limit<\/span><span class=\"p\">=<\/span><span class=\"s\">500000<\/span>\r\n<span class=\"py\">java.util.logging.FileHandler.count<\/span><span class=\"p\">=<\/span><span class=\"s\">3<\/span>\r\n<span class=\"py\">java.util.logging.FileHandler.formatter<\/span><span class=\"p\">=<\/span><span class=\"s\">java.util.logging.SimpleFormatter<\/span>\r\n\r\n<span class=\"py\">java.util.logging.SimpleFormatter.format<\/span><span class=\"p\">=<\/span><span class=\"s\">%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s %2$s %5$s%6$s<\/span><span class=\"se\">\\r\\n<\/span>\r\n<\/code><\/pre>\n<p>level\u53ef\u4ee5\u8bbe\u7f6e\u5982\u4e0b\u5185\u5bb9\u3002<\/p>\n<p>\u4e25\u91cd (\u6700\u9ad8\u503c)\uff1a\u6545\u969c<br \/>\n\u8b66\u544a (\u8b66\u544a)\uff1a\u6f5c\u5728\u95ee\u9898<br \/>\n\u4fe1\u606f\uff1a\u6d88\u606f\u4fe1\u606f<br \/>\n\u914d\u7f6e\uff1a\u9759\u6001\u914d\u7f6e\u6d88\u606f<br \/>\n\u826f\u597d\uff1a\u8ddf\u8e2a\u4fe1\u606f<br \/>\n\u8f83\u597d\uff1a\u76f8\u5f53\u8be6\u7ec6\u7684\u8ddf\u8e2a\u6d88\u606f<br \/>\n\u6700\u597d (\u6700\u4f4e\u503c)\uff1a\u975e\u5e38\u8be6\u7ec6\u7684\u8ddf\u8e2a\u6d88\u606f<\/p>\n<p>\u8fd8\u6709\u5168\u9009\u548c\u5173\u95ed\u9009\u9879\u3002<br \/>\n\u8ba4\u4e3a\u53ea\u4f7f\u7528\u4ee5\u4e0b\u4e09\u4e2a\u7ea7\u522b\u4f1a\u66f4\u5bb9\u6613\u7406\u89e3\uff1a<br \/>\n\u9519\u8bef\uff1a\u4e25\u91cd<br \/>\n\u4fe1\u606f\uff1a\u4fe1\u606f<br \/>\n\u8c03\u8bd5\uff1a\u6700\u8be6\u7ec6<\/p>\n<h3>1-2-3\u3002\u6e90\u4ee3\u7801 (Y\u012b-\u00e8r-.<\/h3>\n<pre class=\"post-pre\"><code><span class=\"kd\">private<\/span> <span class=\"kd\">static<\/span> <span class=\"nc\">Log<\/span> <span class=\"n\">_log<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">LogFactory<\/span><span class=\"o\">.<\/span><span class=\"na\">getLog<\/span><span class=\"o\">(<\/span><span class=\"nc\">Sample<\/span><span class=\"o\">.<\/span><span class=\"na\">class<\/span><span class=\"o\">);<\/span>\r\n\r\n<span class=\"n\">_log<\/span><span class=\"o\">.<\/span><span class=\"na\">debug<\/span><span class=\"o\">(<\/span><span class=\"s\">\"\u30c7\u30d0\u30c3\u30b0\u30e1\u30c3\u30bb\u30fc\u30b8\"<\/span><span class=\"o\">);<\/span>\r\n<span class=\"n\">_log<\/span><span class=\"o\">.<\/span><span class=\"na\">info<\/span><span class=\"o\">(<\/span><span class=\"s\">\"\u30a4\u30f3\u30d5\u30a9\u30e1\u30c3\u30bb\u30fc\u30b8\"<\/span><span class=\"o\">);<\/span>\r\n<span class=\"n\">_log<\/span><span class=\"o\">.<\/span><span class=\"na\">error<\/span><span class=\"o\">(<\/span><span class=\"s\">\"\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\"<\/span><span class=\"o\">);<\/span>\r\n<\/code><\/pre>\n<h3>\u4e00\u4e8c\u56db\u3002\u7528\u6cd5\u3002<\/h3>\n<p>\u5728\u542f\u52a8\u65f6\uff0c\u6307\u5b9a\u53c2\u6570\u201c-Djava.util.logging.config.file=\u6587\u4ef6\u8def\u5f84\u201d\u3002<\/p>\n<h3>1-2-5.\u7591\u96be\u89e3\u7b54<\/h3>\n<p>\u5728\u6807\u51c6\u8f93\u51fa\u4e2d\u6ca1\u6709\u8f93\u51fa\u8c03\u8bd5\u4fe1\u606f\u3002<br \/>\n\u9700\u8981\u6dfb\u52a0&#8221;java.util.logging.ConsoleHandler.level=FINEST&#8221;\u3002<\/p>\n<p>\u5728\u6587\u4ef6\u4e2d\u8fdb\u884c\u8ffd\u52a0\u2192\u6dfb\u52a0&#8221;java.util.logging.FileHandler.append=true&#8221;\u3002<\/p>\n<p>\u6211\u53ea\u60f3\u4e3a\u7279\u5b9a\u7684\u8bfe\u7a0b\u6307\u5b9a\u8be6\u7ec6\u65e5\u5fd7\u3002<br \/>\n\u2192\u8bf7\u5728\u300c1-2-6\u300d\u4e2d\u8bb0\u5f55\u3002<\/p>\n<h3>1-2-6. \u6211\u53ea\u60f3\u4e3a\u7279\u5b9a\u7684\u7c7b\u6307\u5b9a\u8be6\u7ec6\u65e5\u5fd7\u3002<\/h3>\n<pre class=\"post-pre\"><code><span class=\"kn\">package<\/span> <span class=\"nn\">logtest.sub1<\/span><span class=\"o\">;<\/span>\r\n\r\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">Sub1<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"kd\">private<\/span> <span class=\"kd\">static<\/span> <span class=\"nc\">Log<\/span> <span class=\"n\">_log<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">LogFactory<\/span><span class=\"o\">.<\/span><span class=\"na\">getLog<\/span><span class=\"o\">(<\/span><span class=\"nc\">Sub1<\/span><span class=\"o\">.<\/span><span class=\"na\">class<\/span><span class=\"o\">);<\/span>\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u5728\u6bcf\u4e2a\u6e90\u6587\u4ef6\u4e0a\u6307\u5b9a\u4e86\u81ea\u5df1\u7684\u7c7b\uff0c\u56e0\u6b64\u5e94\u5c06\u5c5e\u6027\u6587\u4ef6\u4e2d\u7684\u7c7b\u8bbe\u7f6e\u4e3a\u4ee5\u4e0b\u6240\u793a\u3002<\/p>\n<pre class=\"post-pre\"><code>logtest.sub1.Sub1.level=WARNING\r\nlogtest.sub1.Sub1.handlers=java.util.logging.ConsoleHandler\r\n<\/code><\/pre>\n<h2>1-3. JBoss \u65e5\u5fd7\u8bb0\u5f55<\/h2>\n<h1>2. \u65e5\u5fd7\u8f93\u51fa\u5e93<\/h1>\n<h2>2-1. Java\u7684util.logging<\/h2>\n<h3>\u6709\u51732-1-1.logging.properties\u7684\u4fe1\u606f<\/h3>\n<p>\u4ee5\u4e0b\u662f\u53c2\u6570\u5185\u5bb9\uff1a<br \/>\n1. \u65e5\u671f<br \/>\n2. \u8868\u793a\u8c03\u7528\u65b9\u7684\u5b57\u7b26\u4e32\u3002\u5305\u542b\u5305\u540d\u548c\u7c7b\u540d+\u65b9\u6cd5\u540d<br \/>\n3. \u8bb0\u5f55\u5668\u7684\u540d\u79f0\uff0c\u5305\u542b\u5305\u540d\u548c\u7c7b\u540d<br \/>\n4. \u65e5\u5fd7\u7ea7\u522b<br \/>\n5. \u6d88\u606f<br \/>\n6. \u629b\u51fa\u5f02\u5e38<br \/>\n\u53c2\u8003\u94fe\u63a5\uff1ahttps:\/\/docs.oracle.com\/javase\/jp\/8\/docs\/api\/java\/util\/logging\/SimpleFormatter.html<\/p>\n<h2>2-2. Log4j<\/h2>\n<p>2-2. \u65e5\u5fd7\u8bb0\u5f55\u5de5\u5177Log4j<\/p>\n<p>\u5efa\u8bae\u505c\u6b62\u652f\u6301\uff0c\u66f4\u597d\u4f7f\u7528log4j2\u3002<\/p>\n<h3>2-2-1.\u8fdb\u884c\u5b89\u88c5\u3002<\/h3>\n<pre class=\"post-pre\"><code><span class=\"c\">&lt;!-- https:\/\/mvnrepository.com\/artifact\/log4j\/log4j --&gt;<\/span>\r\n<span class=\"nt\">&lt;dependency&gt;<\/span>\r\n    <span class=\"nt\">&lt;groupId&gt;<\/span>log4j<span class=\"nt\">&lt;\/groupId&gt;<\/span>\r\n    <span class=\"nt\">&lt;artifactId&gt;<\/span>log4j<span class=\"nt\">&lt;\/artifactId&gt;<\/span>\r\n    <span class=\"nt\">&lt;version&gt;<\/span>1.2.17<span class=\"nt\">&lt;\/version&gt;<\/span>\r\n<span class=\"nt\">&lt;\/dependency&gt;<\/span>\r\n\r\n<\/code><\/pre>\n<h3>2-2-2. \u8bbe\u7f6e\u6587\u4ef6<\/h3>\n<pre class=\"post-pre\"><code>### direct log messages to stdout ###\r\nlog4j.appender.stdout=org.apache.log4j.ConsoleAppender\r\nlog4j.appender.stdout.Target=System.out\r\nlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout\r\nlog4j.appender.stdout.layout.ConversionPattern=%d %5p %c{1} - %m%n\r\n\r\n### direct messages to file mylog.log ###\r\nlog4j.appender.file=org.apache.log4j.FileAppender\r\nlog4j.appender.file.File=log\/log4j.log\r\nlog4j.appender.file.Append=true\r\nlog4j.appender.file.layout=org.apache.log4j.PatternLayout\r\nlog4j.appender.file.layout.ConversionPattern=%d %5p %c{1} - %m%n\r\n\r\nlog4j.rootLogger=debug, stdout, file\r\n<\/code><\/pre>\n<p>\u5173\u4e8e ConversionPattern<br \/>\n\u00b7 \u7c7b\u540d\uff1a&#8221;%C&#8221;\u3002\u4f7f\u7528&#8221;%C{1}&#8221;\u53ef\u7701\u7565\u5305\u540d\u3002<br \/>\n\u00b7 \u65b9\u6cd5\u540d\uff1a%M<br \/>\n\u00b7 \u8fdb\u7a0bID \u4e0d\u652f\u6301<br \/>\n\u00b7 \u7ebf\u7a0bID \u4e0d\u652f\u6301<\/p>\n<p>\u5c06\u65e5\u5fd7\u6587\u4ef6\u5206\u6210\u591a\u4e2a\u6587\u4ef6<\/p>\n<pre class=\"post-pre\"><code>\r\n### direct log messages to stdout ###\r\nlog4j.appender.stdout=org.apache.log4j.ConsoleAppender\r\nlog4j.appender.stdout.Target=System.out\r\nlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout\r\nlog4j.appender.stdout.layout.ConversionPattern=%C{1} %M %t %d %5p %c{1} - %m%n\r\n\r\n### direct messages to file mylog.log ###\r\nlog4j.appender.file1=org.apache.log4j.FileAppender\r\nlog4j.appender.file1.File=log\/log4j1.log\r\nlog4j.appender.file1.Append=true\r\nlog4j.appender.file1.layout=org.apache.log4j.PatternLayout\r\nlog4j.appender.file1.layout.ConversionPattern=%d %5p %c{1} - %m%n\r\n### direct messages to file mylog.log ###\r\nlog4j.appender.file2=org.apache.log4j.FileAppender\r\nlog4j.appender.file2.File=log\/log4j2.log\r\nlog4j.appender.file2.Append=true\r\nlog4j.appender.file2.layout=org.apache.log4j.PatternLayout\r\nlog4j.appender.file2.layout.ConversionPattern=%d %5p %c{1} - %m%n\r\n\r\n#\r\nlog4j.logger.kero.domain=debug, file1\r\nlog4j.logger.kero.view=debug, file2\r\nlog4j.logger.kero.infrastructure=debug, file2\r\nlog4j.rootLogger=debug, stdout\r\n\r\n<\/code><\/pre>\n<h3>2-2-3. \u6307\u5b9a\u5c5e\u6027\u6587\u4ef6<\/h3>\n<p>\u5728Java\u7684\u542f\u52a8\u9009\u9879\u4e2d\u6307\u5b9a\u5982\u4e0b\u3002<\/p>\n<ul class=\"post-ul\">\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb<\/ul>\n<p>\u5c06\u4ee5\u4e0b\u5185\u5bb9\u4ee5\u4e2d\u6587\u7ffb\u8bd1\u5e76\u6539\u5199\u4e3a\uff1a<br \/>\n-Dlog4j.configuration=file:\/C:\/tmp\/mylog4j.properties<\/p>\n<p>-Dlog4j.configuration=file:\/C:\/tmp\/mylog4j.properties \u53ef\u4ee5\u6539\u5199\u4e3a\uff1a-Dlog4j\u914d\u7f6e=\u6587\u4ef6\uff1a\/C:\/tmp\/mylog4j.properties<\/p>\n<ul class=\"post-ul\">XML\u30d5\u30a1\u30a4\u30eb<\/ul>\n<p>-Dlog4j.configuration=file:\/C:\/tmp\/mylog4j.xml -Dlog4j.configuratorClass=org.apache.log4j.xml.DOMConfigurator<br \/>\n-\u4f7f\u7528\u4ee5\u4e0b\u65b9\u5f0f\u914d\u7f6elog4j\uff1a-Dlog4j.configuration=file:\/C:\/tmp\/mylog4j.xml -Dlog4j.configuratorClass=org.apache.log4j.xml.DOMConfigurator<\/p>\n<h2>2-3. Log4j2<br \/>\n2-3. Log4j2<\/h2>\n<h3>2-3-1. \u5b89\u88c5<\/h3>\n<pre class=\"post-pre\"><code>        <span class=\"nt\">&lt;dependency&gt;<\/span>\r\n            <span class=\"nt\">&lt;groupId&gt;<\/span>org.apache.logging.log4j<span class=\"nt\">&lt;\/groupId&gt;<\/span>\r\n            <span class=\"nt\">&lt;artifactId&gt;<\/span>log4j-api<span class=\"nt\">&lt;\/artifactId&gt;<\/span>\r\n            <span class=\"nt\">&lt;version&gt;<\/span>2.9.1<span class=\"nt\">&lt;\/version&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/dependency&gt;<\/span>\r\n        <span class=\"nt\">&lt;dependency&gt;<\/span>\r\n            <span class=\"nt\">&lt;groupId&gt;<\/span>org.apache.logging.log4j<span class=\"nt\">&lt;\/groupId&gt;<\/span>\r\n            <span class=\"nt\">&lt;artifactId&gt;<\/span>log4j-core<span class=\"nt\">&lt;\/artifactId&gt;<\/span>\r\n            <span class=\"nt\">&lt;version&gt;<\/span>2.9.1<span class=\"nt\">&lt;\/version&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/dependency&gt;<\/span>\r\n<\/code><\/pre>\n<h3>2-3-2. \u914d\u7f6e\u6587\u4ef6<\/h3>\n<pre class=\"post-pre\"><code><span class=\"cp\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;<\/span>\r\n<span class=\"cp\">&lt;!DOCTYPE log4j:configuration&gt;<\/span>\r\n<span class=\"nt\">&lt;Configuration<\/span> <span class=\"na\">status=<\/span><span class=\"s\">\"OFF\"<\/span><span class=\"nt\">&gt;<\/span>\r\n    <span class=\"nt\">&lt;Properties&gt;<\/span>\r\n        <span class=\"nt\">&lt;Property<\/span> <span class=\"na\">name=<\/span><span class=\"s\">\"ptn\"<\/span><span class=\"nt\">&gt;<\/span>%d{yyyy-MM-dd HH:mm:ss.SSS} p=%-5p c=%c t=%t C=%C F=%F M=%M L=%L m=%m %n<span class=\"nt\">&lt;\/Property&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/Properties&gt;<\/span>\r\n    <span class=\"nt\">&lt;Appenders&gt;<\/span>\r\n        <span class=\"nt\">&lt;Console<\/span> <span class=\"na\">name=<\/span><span class=\"s\">\"console\"<\/span> <span class=\"na\">target=<\/span><span class=\"s\">\"SYSTEM_OUT\"<\/span><span class=\"nt\">&gt;<\/span>\r\n            <span class=\"nt\">&lt;PatternLayout<\/span> <span class=\"na\">pattern=<\/span><span class=\"s\">\"${ptn}\"<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/Console&gt;<\/span>\r\n        <span class=\"nt\">&lt;RollingFile<\/span> <span class=\"na\">name=<\/span><span class=\"s\">\"file\"<\/span> <span class=\"na\">fileName=<\/span><span class=\"s\">\"log\/log4j2.log\"<\/span>\r\n            <span class=\"na\">filePattern=<\/span><span class=\"s\">\"log\/%d{yyyyMM}\/log4j2_%d{yyyyMMdd}_%i.log\"<\/span><span class=\"nt\">&gt;<\/span>\r\n            <span class=\"nt\">&lt;PatternLayout<\/span> <span class=\"na\">pattern=<\/span><span class=\"s\">\"${ptn}\"<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n            <span class=\"nt\">&lt;Policies&gt;<\/span>\r\n                <span class=\"nt\">&lt;OnStartupTriggeringPolicy<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n                <span class=\"nt\">&lt;SizeBasedTriggeringPolicy<\/span> <span class=\"na\">size=<\/span><span class=\"s\">\"2 MB\"<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n                <span class=\"nt\">&lt;TimeBasedTriggeringPolicy<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n            <span class=\"nt\">&lt;\/Policies&gt;<\/span>\r\n            <span class=\"nt\">&lt;DefaultRolloverStrategy<\/span> <span class=\"na\">max=<\/span><span class=\"s\">\"10\"<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/RollingFile&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/Appenders&gt;<\/span>\r\n    <span class=\"nt\">&lt;Loggers&gt;<\/span>\r\n        <span class=\"nt\">&lt;Root<\/span> <span class=\"na\">level=<\/span><span class=\"s\">\"all\"<\/span><span class=\"nt\">&gt;<\/span>\r\n            <span class=\"nt\">&lt;AppenderRef<\/span> <span class=\"na\">ref=<\/span><span class=\"s\">\"console\"<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n            <span class=\"nt\">&lt;AppenderRef<\/span> <span class=\"na\">ref=<\/span><span class=\"s\">\"file\"<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/Root&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/Loggers&gt;<\/span>\r\n<span class=\"nt\">&lt;\/Configuration&gt;<\/span>\r\n<\/code><\/pre>\n<h3>\u53ea\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff1a<\/h3>\n<p>\u9171\u6599<\/p>\n<pre class=\"post-pre\"><code><span class=\"kn\">package<\/span> <span class=\"nn\">ml.kerotori.log4j<\/span><span class=\"o\">;<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.apache.logging.log4j.LogManager<\/span><span class=\"o\">;<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.apache.logging.log4j.Logger<\/span><span class=\"o\">;<\/span>\r\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">Test1<\/span> <span class=\"o\">{<\/span>\r\n    <span class=\"kd\">static<\/span> <span class=\"nc\">Logger<\/span> <span class=\"n\">logger<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">LogManager<\/span><span class=\"o\">.<\/span><span class=\"na\">getLogger<\/span><span class=\"o\">(<\/span><span class=\"nc\">Test1<\/span><span class=\"o\">.<\/span><span class=\"na\">class<\/span><span class=\"o\">);<\/span>\r\n\r\n    <span class=\"kd\">public<\/span> <span class=\"kd\">static<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">main<\/span><span class=\"o\">(<\/span><span class=\"nc\">String<\/span><span class=\"o\">[]<\/span> <span class=\"n\">args<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\r\n        <span class=\"n\">logger<\/span><span class=\"o\">.<\/span><span class=\"na\">trace<\/span><span class=\"o\">(<\/span><span class=\"s\">\"Test1\u306emain\u30e1\u30bd\u30c3\u30c9\"<\/span><span class=\"o\">);<\/span>\r\n    <span class=\"o\">}<\/span>\r\n<span class=\"o\">}<\/span>\r\n<\/code><\/pre>\n<h2>2-4. Logback -&gt; 2-4. Logback<\/h2>\n<h3>2-4-1. \u5b89\u88c5<\/h3>\n<pre class=\"post-pre\"><code>    <span class=\"nt\">&lt;dependency&gt;<\/span>\r\n        <span class=\"nt\">&lt;groupId&gt;<\/span>org.slf4j<span class=\"nt\">&lt;\/groupId&gt;<\/span>\r\n        <span class=\"nt\">&lt;artifactId&gt;<\/span>slf4j-api<span class=\"nt\">&lt;\/artifactId&gt;<\/span>\r\n        <span class=\"nt\">&lt;version&gt;<\/span>1.7.25<span class=\"nt\">&lt;\/version&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/dependency&gt;<\/span>\r\n\r\n    <span class=\"nt\">&lt;dependency&gt;<\/span>\r\n        <span class=\"nt\">&lt;groupId&gt;<\/span>ch.qos.logback<span class=\"nt\">&lt;\/groupId&gt;<\/span>\r\n        <span class=\"nt\">&lt;artifactId&gt;<\/span>logback-classic<span class=\"nt\">&lt;\/artifactId&gt;<\/span>\r\n        <span class=\"nt\">&lt;version&gt;<\/span>1.1.3<span class=\"nt\">&lt;\/version&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/dependency&gt;<\/span>\r\n\r\n    <span class=\"nt\">&lt;dependency&gt;<\/span>\r\n        <span class=\"nt\">&lt;groupId&gt;<\/span>ch.qos.logback<span class=\"nt\">&lt;\/groupId&gt;<\/span>\r\n        <span class=\"nt\">&lt;artifactId&gt;<\/span>logback-core<span class=\"nt\">&lt;\/artifactId&gt;<\/span>\r\n        <span class=\"nt\">&lt;version&gt;<\/span>1.1.3<span class=\"nt\">&lt;\/version&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/dependency&gt;<\/span>\r\n<\/code><\/pre>\n<p>\u2191\u9019\u4e26\u4e0d\u662f\u5fc5\u8981\u7684\u3002\u53ea\u9700\u4f7f\u7528logback-classic\u5c31\u53ef\u4ee5\u4e86\u3002<br \/>\n\u2191\u4e0a\u9762\u662f\u932f\u8aa4\u7684\u3002slf4j\u662f\u5fc5\u9700\u7684\u3002\u5728\u6e90\u4ee3\u78bc\u4e2d\uff0c\u7121\u6cd5\u4f7f\u7528SLF4J\u7684\u4ecb\u9762&#8230;&#8230;\u3002<\/p>\n<h3>2-4-2 \u8bbe\u5b9a\u6587\u4ef6<\/h3>\n<pre class=\"post-pre\"><code><span class=\"cp\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;<\/span>\r\n<span class=\"cp\">&lt;!DOCTYPE logback&gt;<\/span>\r\n<span class=\"nt\">&lt;configuration&gt;<\/span>\r\n    <span class=\"nt\">&lt;appender<\/span> <span class=\"na\">name=<\/span><span class=\"s\">\"STDOUT\"<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"ch.qos.logback.core.ConsoleAppender\"<\/span><span class=\"nt\">&gt;<\/span>\r\n        <span class=\"nt\">&lt;encoder&gt;<\/span>\r\n            <span class=\"nt\">&lt;pattern&gt;<\/span>%date{yyyy-MM-dd HH:mm:ss} [%thread] %level %logger{0} - %msg \\(%file:%line\\)%n<span class=\"nt\">&lt;\/pattern&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/encoder&gt;<\/span>\r\n        <span class=\"nt\">&lt;filter<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"ch.qos.logback.classic.filter.ThresholdFilter\"<\/span><span class=\"nt\">&gt;<\/span>\r\n            <span class=\"nt\">&lt;level&gt;<\/span>DEBUG<span class=\"nt\">&lt;\/level&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/filter&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/appender&gt;<\/span>\r\n\r\n    <span class=\"nt\">&lt;appender<\/span> <span class=\"na\">name=<\/span><span class=\"s\">\"FILE\"<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"ch.qos.logback.core.rolling.RollingFileAppender\"<\/span><span class=\"nt\">&gt;<\/span>\r\n        <span class=\"nt\">&lt;file&gt;<\/span>logs\/logback.log<span class=\"nt\">&lt;\/file&gt;<\/span>\r\n        <span class=\"nt\">&lt;rollingPolicy<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\"<\/span><span class=\"nt\">&gt;<\/span>\r\n            <span class=\"nt\">&lt;fileNamePattern&gt;<\/span>logs\/app.%d{yyyy-MM-dd}.log.tar.gz<span class=\"nt\">&lt;\/fileNamePattern&gt;<\/span>\r\n            <span class=\"nt\">&lt;maxHistory&gt;<\/span>7<span class=\"nt\">&lt;\/maxHistory&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/rollingPolicy&gt;<\/span>\r\n        <span class=\"nt\">&lt;encoder&gt;<\/span>\r\n            <span class=\"nt\">&lt;pattern&gt;<\/span>%d{yyyy-MM-dd HH:mm:ss.SSS} - %m%n<span class=\"nt\">&lt;\/pattern&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/encoder&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/appender&gt;<\/span>\r\n\r\n    <span class=\"nt\">&lt;root<\/span> <span class=\"na\">level=<\/span><span class=\"s\">\"DEBUG\"<\/span> <span class=\"na\">additivity=<\/span><span class=\"s\">\"false\"<\/span><span class=\"nt\">&gt;<\/span>\r\n        <span class=\"nt\">&lt;appender-ref<\/span> <span class=\"na\">ref=<\/span><span class=\"s\">\"STDOUT\"<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n        <span class=\"nt\">&lt;appender-ref<\/span> <span class=\"na\">ref=<\/span><span class=\"s\">\"FILE\"<\/span> <span class=\"nt\">\/&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/root&gt;<\/span>\r\n\r\n<span class=\"nt\">&lt;\/configuration&gt;<\/span>\r\n<\/code><\/pre>\n<h3>2-4-3\u3002\u91ac\u6599<\/h3>\n<pre class=\"post-pre\"><code>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.slf4j.Logger<\/span><span class=\"o\">;<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.slf4j.LoggerFactory<\/span><span class=\"o\">;<\/span>\r\n\r\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">Test2<\/span> <span class=\"o\">{<\/span>\r\n    <span class=\"kd\">private<\/span> <span class=\"kd\">static<\/span> <span class=\"nc\">Logger<\/span> <span class=\"n\">log<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">LoggerFactory<\/span><span class=\"o\">.<\/span><span class=\"na\">getLogger<\/span><span class=\"o\">(<\/span><span class=\"nc\">Test2<\/span><span class=\"o\">.<\/span><span class=\"na\">class<\/span><span class=\"o\">);<\/span>\r\n    <span class=\"kd\">public<\/span> <span class=\"kd\">static<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">main<\/span><span class=\"o\">(<\/span><span class=\"nc\">String<\/span><span class=\"o\">[]<\/span> <span class=\"n\">args<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\r\n         <span class=\"n\">log<\/span><span class=\"o\">.<\/span><span class=\"na\">debug<\/span><span class=\"o\">(<\/span><span class=\"s\">\"Test2\u306emain\u30e1\u30bd\u30c3\u30c9\"<\/span><span class=\"o\">);<\/span>\r\n    <span class=\"o\">}<\/span>\r\n\r\n<span class=\"o\">}<\/span>\r\n\r\n<\/code><\/pre>\n<h2>\u53ea\u9700\u8981\u4e00\u4e2a\u9009\u9879\uff0c\u4ee5\u4e0b\u662f\u53c2\u8003\u7684\u4e2d\u6587\u91ca\u4e49\uff1a<\/h2>\n<p>\u5bf9\u4e8e\u521d\u5b66\u8005\u6765\u8bf4\uff0c\u7b80\u8981\u4e86\u89e3Java\u65e5\u5fd7\u5e93\u7684\u5386\u53f2\u4e0e\u73b0\u72b6\u3002<\/p>\n<h1>3. SLF4J+logback \u7684\u4e2d\u6587\u8868\u8fbe\uff1a<\/h1>\n<h2>3-1. \u5b89\u88c5<\/h2>\n<pre class=\"post-pre\"><code>        <span class=\"nt\">&lt;dependency&gt;<\/span>\r\n            <span class=\"nt\">&lt;groupId&gt;<\/span>ch.qos.logback<span class=\"nt\">&lt;\/groupId&gt;<\/span>\r\n            <span class=\"nt\">&lt;artifactId&gt;<\/span>logback-classic<span class=\"nt\">&lt;\/artifactId&gt;<\/span>\r\n            <span class=\"nt\">&lt;version&gt;<\/span>1.2.3<span class=\"nt\">&lt;\/version&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/dependency&gt;<\/span>\r\n    <span class=\"nt\">&lt;dependency&gt;<\/span>\r\n        <span class=\"nt\">&lt;groupId&gt;<\/span>org.slf4j<span class=\"nt\">&lt;\/groupId&gt;<\/span>\r\n        <span class=\"nt\">&lt;artifactId&gt;<\/span>slf4j-api<span class=\"nt\">&lt;\/artifactId&gt;<\/span>\r\n        <span class=\"nt\">&lt;version&gt;<\/span>1.7.25<span class=\"nt\">&lt;\/version&gt;<\/span>\r\n    <span class=\"nt\">&lt;\/dependency&gt;<\/span>\r\n\r\n<\/code><\/pre>\n<p>\u9700\u8981\u300cslf4j-api\u300d\u300clogback-core\u300d\u300clogback-classic\u300d\u8fd9\u4e09\u4e2a\u5e93\uff0c\u5176\u4e2d\u300clogback-classic\u300d\u8fd8\u4f9d\u8d56\u5176\u4ed6\u5e93\u3002\u4f46\u662f\uff0c\u5982\u679c\u4e0d\u5b89\u88c5SLF4J\uff0c\u6e90\u4ee3\u7801\u4e2d\u5c31\u4e0d\u80fd\u4f7f\u7528SLF4J\u7684\u63a5\u53e3\u3002<\/p>\n<h2>3-2. \u4f7f\u7528\u65b9\u6cd5<\/h2>\n<pre class=\"post-pre\"><code><span class=\"kn\">import<\/span> <span class=\"nn\">org.slf4j.Logger<\/span><span class=\"o\">;<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.slf4j.LoggerFactory<\/span><span class=\"o\">;<\/span>\r\n\r\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">Sample<\/span> <span class=\"o\">{<\/span>\r\n\r\n    <span class=\"kd\">private<\/span> <span class=\"kd\">static<\/span> <span class=\"kd\">final<\/span> <span class=\"nc\">Logger<\/span> <span class=\"n\">log<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">LoggerFactory<\/span><span class=\"o\">.<\/span><span class=\"na\">getLogger<\/span><span class=\"o\">(<\/span><span class=\"nc\">Sample<\/span><span class=\"o\">.<\/span><span class=\"na\">class<\/span><span class=\"o\">);<\/span>\r\n\r\n    <span class=\"kd\">public<\/span> <span class=\"kd\">static<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">main<\/span><span class=\"o\">(<\/span><span class=\"nc\">String<\/span><span class=\"o\">[]<\/span> <span class=\"n\">args<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\r\n        <span class=\"n\">log<\/span><span class=\"o\">.<\/span><span class=\"na\">trace<\/span><span class=\"o\">(<\/span><span class=\"s\">\"trace\u3067\u3059\u3002\"<\/span><span class=\"o\">);<\/span>\r\n        <span class=\"n\">log<\/span><span class=\"o\">.<\/span><span class=\"na\">error<\/span><span class=\"o\">(<\/span><span class=\"s\">\"error\u3067\u3059\u3002\"<\/span><span class=\"o\">);<\/span>\r\n    <span class=\"o\">}<\/span>\r\n\r\n<\/code><\/pre>\n<p>\u7531\u4e8eSLF4J\u662f\u4e00\u4e2a\u63a5\u53e3\uff0c\u800cLogback\u662f\u5176\u5b9e\u73b0\uff0c\u56e0\u6b64\u9700\u8981\u4f7f\u7528import\u8bed\u53e5import SLF4J\u3002<\/p>\n<h2>\u5982\u679c\u8981\u4f7f\u7528Lombok\u7684\u8bdd<\/h2>\n<pre class=\"post-pre\"><code><span class=\"kn\">import<\/span> <span class=\"nn\">lombok.extern.slf4j.Slf4j<\/span><span class=\"o\">;<\/span>\r\n\r\n<span class=\"nd\">@Slf4j<\/span>\r\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">Sample<\/span> <span class=\"o\">{<\/span>\r\n\r\n    <span class=\"kd\">public<\/span> <span class=\"kd\">static<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">main<\/span><span class=\"o\">(<\/span><span class=\"nc\">String<\/span><span class=\"o\">[]<\/span> <span class=\"n\">args<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\r\n        <span class=\"n\">log<\/span><span class=\"o\">.<\/span><span class=\"na\">trace<\/span><span class=\"o\">(<\/span><span class=\"s\">\"trace\u3067\u3059\u3002\"<\/span><span class=\"o\">);<\/span>\r\n        <span class=\"n\">log<\/span><span class=\"o\">.<\/span><span class=\"na\">error<\/span><span class=\"o\">(<\/span><span class=\"s\">\"error\u3067\u3059\u3002\"<\/span><span class=\"o\">);<\/span>\r\n<\/code><\/pre>\n<h2>3-4. \u8bbe\u5b9a\u6587\u4ef6<\/h2>\n<h3>3-4-1. \u8bbe\u5b9a\u6587\u4ef6\u7684\u5b58\u653e\u4f4d\u7f6e<\/h3>\n<p>\u5c06 logback.xml \u6587\u4ef6\u653e\u7f6e\u5728 &#8220;\/src\/main\/resources&#8221; \u8def\u5f84\u4e0b\u3002<br \/>\n\u5bf9\u4e8e Web \u5e94\u7528\u7a0b\u5e8f\uff0c\u5c06\u5176\u653e\u7f6e\u5728 &#8220;\/WEB-INF\/classes&#8221; \u8def\u5f84\u4e0b\u3002\uff08\u5c06\u5176\u653e\u7f6e\u5728 WEB-INF \u7684\u76f4\u63a5\u5b50\u6587\u4ef6\u5939\u6216 lib \u6587\u4ef6\u5939\u4e0b\uff0c\u4f46\u65e0\u6cd5\u52a0\u8f7d\u3002\uff09<br \/>\n\u901a\u8fc7\u6307\u5b9a -Dlogback.configurationFile \u53ef\u4ee5\u8bfb\u53d6\u4efb\u610f\u4f4d\u7f6e\u7684\u6587\u4ef6\u3002<\/p>\n<h3>3-4-2. \u5728Maven\u7684\u6a21\u5757\u7ed3\u6784\u4e2d\u7684\u5c5e\u6027\u6587\u4ef6\u3002<\/h3>\n<p>\u5982\u679c\u5728Maven\u4e2d\u6709\u591a\u4e2a\u5b50\u9879\u76ee\u5b58\u5728\u4e8e\u6a21\u5757\u5316\u7ed3\u6784\u4e2d\uff0c\u5982\u4f55\u5c06\u914d\u7f6e\u6587\u4ef6\u8fdb\u884c\u5171\u4eab\u3002<\/p>\n<p>\u5c06&#8221;logback.xml&#8221;\u6587\u4ef6\u653e\u7f6e\u5728\u7236\u9879\u76ee\u7684src\/main\/resources\u76ee\u5f55\u4e0b\uff0c\u5e76\u5728\u7236\u9879\u76ee\u7684pom.xml\u6587\u4ef6\u4e2d\u8fdb\u884c\u4ee5\u4e0b\u7684\u914d\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code>\r\n    <span class=\"nt\">&lt;build&gt;<\/span>\r\n\r\n        <span class=\"nt\">&lt;resources&gt;<\/span>\r\n            <span class=\"nt\">&lt;resource&gt;<\/span>\r\n                <span class=\"nt\">&lt;directory&gt;<\/span>${project.basedir}\/..\/src\/main\/resources<span class=\"nt\">&lt;\/directory&gt;<\/span>\r\n                <span class=\"nt\">&lt;includes&gt;<\/span>\r\n                    <span class=\"nt\">&lt;include&gt;<\/span>**\/*.xml<span class=\"nt\">&lt;\/include&gt;<\/span>\r\n                <span class=\"nt\">&lt;\/includes&gt;<\/span>\r\n            <span class=\"nt\">&lt;\/resource&gt;<\/span>\r\n        <span class=\"nt\">&lt;\/resources&gt;<\/span>\r\n\u30fb\u30fb\u30fb\u7701\u7565\r\n<\/code><\/pre>\n<h3>3-5. \u5b9a\u5236\u5316\u914d\u7f6e\u6587\u4ef6<\/h3>\n<h3>\u8f93\u51fa\u8fdb\u7a0bID\u4e3a3-5-1\u3002<\/h3>\n<h3>\u8f93\u51fa3-5-2\u7684\u65b9\u6cd5\u540d\u79f0<\/h3>\n<p>\u53ef\u4ee5\u4f7f\u7528\u300c%M\u300d\u3002\u8bf7\u67e5\u770b\u4ee5\u4e0b\u7f51\u7ad9\u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\uff1a<br \/>\nhttp:\/\/logback.qos.ch\/manual\/layouts_zh_CN.html<\/p>\n<h3>3-5-3\u6a21\u5f0f\u4f8b\u5b50<\/h3>\n<p>\u793a\u4f8b\u4ee3\u7801<\/p>\n<pre class=\"post-pre\"><code><span class=\"kn\">package<\/span> <span class=\"nn\">log<\/span><span class=\"o\">;<\/span>\r\n\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.slf4j.Logger<\/span><span class=\"o\">;<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.slf4j.LoggerFactory<\/span><span class=\"o\">;<\/span>\r\n\r\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">LogOut<\/span> <span class=\"o\">{<\/span>\r\n    <span class=\"kd\">private<\/span> <span class=\"kd\">static<\/span> <span class=\"kd\">final<\/span> <span class=\"nc\">Logger<\/span> <span class=\"n\">log<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">LoggerFactory<\/span><span class=\"o\">.<\/span><span class=\"na\">getLogger<\/span><span class=\"o\">(<\/span><span class=\"nc\">LogOut<\/span><span class=\"o\">.<\/span><span class=\"na\">class<\/span><span class=\"o\">);<\/span>\r\n\r\n    <span class=\"kd\">public<\/span> <span class=\"kd\">static<\/span> <span class=\"nc\">String<\/span> <span class=\"nf\">Message<\/span><span class=\"o\">()<\/span> <span class=\"o\">{<\/span>\r\n        <span class=\"n\">log<\/span><span class=\"o\">.<\/span><span class=\"na\">trace<\/span><span class=\"o\">(<\/span><span class=\"s\">\"trace\u3067\u3059\u3002\"<\/span><span class=\"o\">);<\/span>\r\n        <span class=\"n\">log<\/span><span class=\"o\">.<\/span><span class=\"na\">error<\/span><span class=\"o\">(<\/span><span class=\"s\">\"error\u3067\u3059\u3002\"<\/span><span class=\"o\">);<\/span>\r\n        <span class=\"nc\">System<\/span><span class=\"o\">.<\/span><span class=\"na\">out<\/span><span class=\"o\">.<\/span><span class=\"na\">println<\/span><span class=\"o\">(<\/span><span class=\"s\">\"\u6a19\u6e96\u51fa\u529b\u3067\u3059\"<\/span><span class=\"o\">);<\/span>\r\n        <span class=\"k\">return<\/span> <span class=\"s\">\"Message\u3067\u3059\"<\/span><span class=\"o\">;<\/span>\r\n    <span class=\"o\">}<\/span>\r\n\r\n<span class=\"o\">}<\/span>\r\n<\/code><\/pre>\n<div>\n<div class=\"post-table\">\u8a2d\u5b9a\u4f8b\u51fa\u529b\u7d50\u679c%d{yyyy-MM-dd HH<img loading=\"lazy\" decoding=\"async\" class=\"emoji\" title=\":flag_mm:\" src=\"https:\/\/cdn.qiita.com\/emoji\/twemoji\/unicode\/1f1f2-1f1f2.png\" alt=\":flag_mm:\" width=\"20\" height=\"20\" \/>ss.SSS} &#8211; %m%n2021-03-14 17:35:53.384 &#8211; error\u3067\u3059\u3002%d{yyyy-MM-dd HH<img loading=\"lazy\" decoding=\"async\" class=\"emoji\" title=\":flag_mm:\" src=\"https:\/\/cdn.qiita.com\/emoji\/twemoji\/unicode\/1f1f2-1f1f2.png\" alt=\":flag_mm:\" width=\"20\" height=\"20\" \/>ss.SSS} &#8211; %M [%thread] %level %m%n2021-03-14 21:12:32.372 &#8211; Message [http-nio-8080-exec-7] ERROR error\u3067\u3059\u3002%d{yyyy-MM-dd HH<img loading=\"lazy\" decoding=\"async\" class=\"emoji\" title=\":flag_mm:\" src=\"https:\/\/cdn.qiita.com\/emoji\/twemoji\/unicode\/1f1f2-1f1f2.png\" alt=\":flag_mm:\" width=\"20\" height=\"20\" \/>ss.SSS} &#8211; %logger{10} %M [%thread] %level %m%n2021-03-14 21:20:52.103 &#8211; log.LogOut Message [http-nio-8080-exec-1] ERROR error\u3067\u3059\u3002<\/div>\n<\/div>\n<h3>3-5-4. \u4e0d\u751f\u6210\u7279\u5b9a\u7c7b\u522b\u7684\u65e5\u5fd7\u3002<\/h3>\n<h2>3-6.\u89e3\u51b3\u95ee\u9898<\/h2>\n<h3>\u5728Maven\u4e2d\u8fd0\u884c\u6d4b\u8bd5\u65f6\u51fa\u73b0\u9519\u8bef\u3002<\/h3>\n<p>\u25a0\u73b0\u8c61<br \/>\n\u5728\u6267\u884cMaven\u65f6\uff0c\u4f1a\u8f93\u51fa\u4ee5\u4e0b\u9519\u8bef\u65e5\u5fd7\u3002<\/p>\n<pre class=\"post-pre\"><code>\r\nSLF4J: Class path contains multiple SLF4J bindings.\r\nSLF4J: Found binding in [jar:file:\/C:\/pleiades\/eclipse\/plugins\/org.eclipse.m2e.maven.runtime.slf4j.simple_1.16.0.20200610-1735\/jars\/slf4j-simple-1.7.5.jar!\/org\/slf4j\/impl\/StaticLoggerBinder.class]\r\nSLF4J: Found binding in [file:\/C:\/pleiades\/eclipse\/configuration\/org.eclipse.osgi\/7\/0\/.cp\/org\/slf4j\/impl\/StaticLoggerBinder.class]\r\nSLF4J: See http:\/\/www.slf4j.org\/codes.html#multiple_bindings for an explanation.\r\nSLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]\r\nSLF4J: Class path contains multiple SLF4J bindings.\r\nSLF4J: Found binding in [jar:file:\/C:\/pleiades\/eclipse\/plugins\/org.eclipse.m2e.maven.runtime.slf4j.simple_1.16.0.20200610-1735\/jars\/slf4j-simple-1.7.5.jar!\/org\/slf4j\/impl\/StaticLoggerBinder.class]\r\nSLF4J: Found binding in [file:\/C:\/pleiades\/eclipse\/configuration\/org.eclipse.osgi\/7\/0\/.cp\/org\/slf4j\/impl\/StaticLoggerBinder.class]\r\nSLF4J: See http:\/\/www.slf4j.org\/codes.html#multiple_bindings for an explanation.\r\nSLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]\r\n<\/code><\/pre>\n<p>\u6267\u884c\u6d4b\u8bd5\u65f6\u4f1a\u51fa\u73b0\u4ee5\u4e0b\u9519\u8bef\u3002<\/p>\n<pre class=\"post-pre\"><code>[INFO] -------------------------------------------------------\r\n[INFO]  T E S T S\r\n[INFO] -------------------------------------------------------\r\n[WARNING] Corrupted STDOUT by directly writing to native stream in forked JVM 1. See FAQ web page and the dump file C:\\Users\\\u3051\u308d\\git\\javaUtils2\\Domain\\target\\surefire-reports\\2021-01-17T12-39-22_446-jvmRun1.dumpstream\r\n[INFO] \r\n[INFO] Results:\r\n[INFO] \r\n[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0\r\n[INFO] \r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] Reactor Summary for javaUtils 0.0.1-SNAPSHOT:\r\n[INFO] \r\n[INFO] javaUtils .......................................... SUCCESS [  0.515 s]\r\n[INFO] Domain ............................................. FAILURE [  0.835 s]\r\n[INFO] Infrastructure ..................................... SKIPPED\r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] BUILD FAILURE\r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] Total time:  1.449 s\r\n[INFO] Finished at: 2021-01-17T12:39:22+09:00\r\n[INFO] ------------------------------------------------------------------------\r\n[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project Domain: There are test failures.\r\n[ERROR] \r\n[ERROR] Please refer to C:\\Users\\\u3051\u308d\\git\\javaUtils2\\Domain\\target\\surefire-reports for the individual test results.\r\n[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.\r\n[ERROR] The forked VM terminated without properly saying goodbye. VM crash or System.exit called?\r\n[ERROR] Command was cmd.exe \/X \/C \"C:\\pleiades\\java\\11\\bin\\java -javaagent:C:\\\\Users\\\\\u3051\u308d\\\\.m2\\\\repository\\\\org\\\\jacoco\\\\org.jacoco.agent\\\\0.8.3\\\\org.jacoco.agent-0.8.3-runtime.jar=destfile=C:\\\\Users\\\\\u3051\u308d\\\\git\\\\javaUtils2\\\\Domain\\\\target\\\\jacoco.exec -jar C:\\Users\\\u3051\u308d\\AppData\\Local\\Temp\\surefire10670104236856242318\\surefirebooter7391686314887198056.jar C:\\Users\\\u3051\u308d\\AppData\\Local\\Temp\\surefire10670104236856242318 2021-01-17T12-39-22_446-jvmRun1 surefire16778607688627256100tmp surefire_012236412007154186616tmp\"\r\n[ERROR] Error occurred in starting fork, check output in log\r\n[ERROR] Process Exit Code: 1\r\n[ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?\r\n[ERROR] Command was cmd.exe \/X \/C \"C:\\pleiades\\java\\11\\bin\\java -javaagent:C:\\\\Users\\\\\u3051\u308d\\\\.m2\\\\repository\\\\org\\\\jacoco\\\\org.jacoco.agent\\\\0.8.3\\\\org.jacoco.agent-0.8.3-runtime.jar=destfile=C:\\\\Users\\\\\u3051\u308d\\\\git\\\\javaUtils2\\\\Domain\\\\target\\\\jacoco.exec -jar C:\\Users\\\u3051\u308d\\AppData\\Local\\Temp\\surefire10670104236856242318\\surefirebooter7391686314887198056.jar C:\\Users\\\u3051\u308d\\AppData\\Local\\Temp\\surefire10670104236856242318 2021-01-17T12-39-22_446-jvmRun1 surefire16778607688627256100tmp surefire_012236412007154186616tmp\"\r\n[ERROR] Error occurred in starting fork, check output in log\r\n[ERROR] Process Exit Code: 1\r\n[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:669)\r\n[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:282)\r\n[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245)\r\n[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1183)\r\n[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1011)\r\n[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:857)\r\n[ERROR]     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)\r\n[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)\r\n[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)\r\n[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)\r\n[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)\r\n[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)\r\n[ERROR]     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)\r\n[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)\r\n[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)\r\n[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)\r\n[ERROR]     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)\r\n[ERROR]     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)\r\n[ERROR]     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)\r\n[ERROR]     at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)\r\n[ERROR]     at java.base\/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n[ERROR]     at java.base\/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n[ERROR]     at java.base\/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n[ERROR]     at java.base\/java.lang.reflect.Method.invoke(Method.java:566)\r\n[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)\r\n[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)\r\n[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)\r\n[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)\r\n[ERROR] -&gt; [Help 1]\r\n[ERROR] \r\n[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.\r\n[ERROR] Re-run Maven using the -X switch to enable full debug logging.\r\n[ERROR] \r\n[ERROR] For more information about the errors and possible solutions, please read the following articles:\r\n[ERROR] [Help 1] http:\/\/cwiki.apache.org\/confluence\/display\/MAVEN\/MojoExecutionException\r\n[ERROR] \r\n[ERROR] After correcting the problems, you can resume the build with the command\r\n[ERROR]   mvn &lt;args&gt; -rf :Domain\r\n\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code># Created at 2021-01-17T12:29:56.634\r\nCorrupted STDOUT by directly writing to native stream in forked JVM 1. Stream 'FATAL ERROR in native method: processing of -javaagent failed, appending to system class path failed'.\r\n<\/code><\/pre>\n<p>\u25a0\u5bf9\u5e94\u65b9\u6cd5<br \/>\n\u6240\u4f7f\u7528\u7684\u5f00\u53d1\u73af\u5883\u662f\u300cpleiades-2020-06-java-win-64bit-jre_20200702.zip\u300d\u3002<br \/>\n\u4e0a\u8ff0\u6a21\u5757\u5b58\u5728\u9519\u8bef\u5417\uff1f<br \/>\nhttps:\/\/stackoverflow.com\/questions\/63755390\/multiple-slf4j-bindings-with-m2e-in-eclipse-2020-06<\/p>\n<p>\u66ab\u6642\u5148\u8a66\u8a66\u770b\u4f7f\u7528\u300cpleiades-2020-12-java-win-64bit-jre_20201222.zip\u300d\u3002\u96d6\u7136\u4e00\u958b\u59cb\u6703\u51fa\u73fe\u76f8\u540c\u7684\u8b66\u544a\uff0c\u4f46\u6c92\u6709\u767c\u751f\u932f\u8aa4\uff0c\u6e2c\u8a66\u4e5f\u6210\u529f\u57f7\u884c\u4e86\u3002<\/p>\n<h3>3-6-2.logback.xml\u6587\u4ef6\u7684\u5185\u5bb9\u672a\u80fd\u53cd\u6620\uff08Web\u5e94\u7528\u7a0b\u5e8f\uff09\u3002<\/h3>\n<p>\u4fee\u6539logback.xml\u6587\u4ef6\u540e\uff0cTomcat\u6ca1\u6709\u53cd\u5e94\u3002<br \/>\n\u5728Tomcat\u542f\u52a8\u65f6\uff0c\u4f1a\u51fa\u73b0\u4ee5\u4e0b\u65e5\u5fd7\u3002<\/p>\n<pre class=\"post-pre\"><code>\u60c5\u5831: CATALINA_BASE:            D:\\pleiades-2020-12-java-win-64bit-jre_20201222\\pleiades\\workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\r\n<\/code><\/pre>\n<p>\u6253\u5f00\u8be5\u4f4d\u7f6e\u5e76\u8fdb\u884c\u8c03\u67e5\u540e\uff0c\u53d1\u73b0logback.xml\u6587\u4ef6\u4f4d\u4e8e\u4ee5\u4e0b\u4f4d\u7f6e\uff1a<br \/>\nD:\\pleiades-2020-12-java-win-64bit-jre_20201222\\pleiades\\workspace.metadata.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\WebSample\\WEB-INF\\classes<br \/>\n\u786e\u8ba4\u76f4\u63a5\u7f16\u8f91\u8be5\u6587\u4ef6\u4f1a\u53cd\u6620\u51fa\u6548\u679c\u3002<\/p>\n<h3>3-6-3. \u8f93\u51fa\u76f8\u5bf9\u8def\u5f84\u7684\u76ee\u6807\u4f4d\u7f6e\u672a\u77e5\u3002<\/h3>\n<p>\u5f53\u5c06\u6587\u4ef6\u8f93\u51fa\u8def\u5f84\u8bbe\u4e3a&#8221;log\/logback.txt&#8221;\u65f6\uff0c\u6211\u4e0d\u77e5\u9053\u8f93\u51fa\u7684\u4f4d\u7f6e\uff0c\u6240\u4ee5\u8fdb\u884c\u4e86\u8c03\u67e5\u3002\u4ee5\u4e0b\u662f\u8f93\u51fa\u7684\u4f4d\u7f6e\uff1a<br \/>\nD:\\pleiades-2020-12-java-win-64bit-jre_20201222\\pleiades\\eclipse\\logs<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. \u65e5\u5fd7\u95e8\u9762\u5e93 \u5728log4j\u4e4b\u540e\uff0c\u6807\u51c6\u7684java.util.logging\u88ab\u521b\u5efa\u4e86\uff0c\u4f46\u662f\u7531\u4e8elog4j\u66f4\u6613\u4e8e [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-31443","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5173\u4e8eJava\u7684\u65e5\u5fd7\u8f93\u51fa - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5173\u4e8ejava\u7684\u65e5\u5fd7\u8f93\u51fa-2\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5173\u4e8eJava\u7684\u65e5\u5fd7\u8f93\u51fa\" \/>\n<meta property=\"og:description\" content=\"1. \u65e5\u5fd7\u95e8\u9762\u5e93 \u5728log4j\u4e4b\u540e\uff0c\u6807\u51c6\u7684java.util.logging\u88ab\u521b\u5efa\u4e86\uff0c\u4f46\u662f\u7531\u4e8elog4j\u66f4\u6613\u4e8e [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5173\u4e8ejava\u7684\u65e5\u5fd7\u8f93\u51fa-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-31T07:28:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T06:50:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.qiita.com\/emoji\/twemoji\/unicode\/1f1f2-1f1f2.png\" \/>\n<meta name=\"author\" content=\"\u79d1, \u96c5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u79d1, \u96c5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/\",\"name\":\"\u5173\u4e8eJava\u7684\u65e5\u5fd7\u8f93\u51fa - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-10-31T07:28:04+00:00\",\"dateModified\":\"2024-04-29T06:50:17+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5173\u4e8eJava\u7684\u65e5\u5fd7\u8f93\u51fa\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\",\"name\":\"\u79d1, \u96c5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u96c5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5173\u4e8eJava\u7684\u65e5\u5fd7\u8f93\u51fa - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5173\u4e8ejava\u7684\u65e5\u5fd7\u8f93\u51fa-2\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5173\u4e8eJava\u7684\u65e5\u5fd7\u8f93\u51fa","og_description":"1. \u65e5\u5fd7\u95e8\u9762\u5e93 \u5728log4j\u4e4b\u540e\uff0c\u6807\u51c6\u7684java.util.logging\u88ab\u521b\u5efa\u4e86\uff0c\u4f46\u662f\u7531\u4e8elog4j\u66f4\u6613\u4e8e [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5173\u4e8ejava\u7684\u65e5\u5fd7\u8f93\u51fa-2\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-10-31T07:28:04+00:00","article_modified_time":"2024-04-29T06:50:17+00:00","og_image":[{"url":"https:\/\/cdn.qiita.com\/emoji\/twemoji\/unicode\/1f1f2-1f1f2.png"}],"author":"\u79d1, \u96c5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u96c5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"13 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/","name":"\u5173\u4e8eJava\u7684\u65e5\u5fd7\u8f93\u51fa - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-10-31T07:28:04+00:00","dateModified":"2024-04-29T06:50:17+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5173\u4e8eJava\u7684\u65e5\u5fd7\u8f93\u51fa"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a","name":"\u79d1, \u96c5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","caption":"\u79d1, \u96c5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%85%b3%e4%ba%8ejava%e7%9a%84%e6%97%a5%e5%bf%97%e8%be%93%e5%87%ba-2\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/31443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=31443"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/31443\/revisions"}],"predecessor-version":[{"id":85923,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/31443\/revisions\/85923"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=31443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=31443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=31443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}