log4j2.xml解析

<!DOCTYPE HTML><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=unicode">
<title>無標題</title>
    
<style id="wiz_custom_css">html, .wiz-editor-body {font-size: 12pt;}.wiz-editor-body {font-family: Helvetica, 'Hiragino Sans GB', '寰蔣闆呴粦', 'Microsoft YaHei UI', SimSun, SimHei, arial, sans-serif;line-height: 1.7;margin: 0 auto;padding: 20px 16px;padding: 1.25rem 1rem;}.wiz-editor-body h1,.wiz-editor-body h2,.wiz-editor-body h3,.wiz-editor-body h4,.wiz-editor-body h5,.wiz-editor-body h6 {margin:20px 0 10px;margin:1.25rem 0 0.625rem;padding: 0;font-weight: bold;}.wiz-editor-body h1 {font-size:20pt;font-size:1.67rem;}.wiz-editor-body h2 {font-size:18pt;font-size:1.5rem;}.wiz-editor-body h3 {font-size:15pt;font-size:1.25rem;}.wiz-editor-body h4 {font-size:14pt;font-size:1.17rem;}.wiz-editor-body h5 {font-size:12pt;font-size:1rem;}.wiz-editor-body h6 {font-size:12pt;font-size:1rem;color: #777777;margin: 1rem 0;}.wiz-editor-body div,.wiz-editor-body p,.wiz-editor-body ul,.wiz-editor-body ol,.wiz-editor-body dl,.wiz-editor-body li {margin:8px 0;}.wiz-editor-body blockquote,.wiz-editor-body table,.wiz-editor-body pre,.wiz-editor-body code {margin:8px 0;}.wiz-editor-body .CodeMirror pre {margin:0;}.wiz-editor-body ul,.wiz-editor-body ol {padding-left:32px;padding-left:2rem;}.wiz-editor-body ol.wiz-list-level1 > li {list-style-type:decimal;}.wiz-editor-body ol.wiz-list-level2 > li {list-style-type:lower-latin;}.wiz-editor-body ol.wiz-list-level3 > li {list-style-type:lower-roman;}.wiz-editor-body blockquote {padding: 0 12px;}.wiz-editor-body blockquote > :first-child {margin-top:0;}.wiz-editor-body blockquote > :last-child {margin-bottom:0;}.wiz-editor-body img {border:0;max-width:100%;height:auto !important;margin:2px 0;}.wiz-editor-body table {border-collapse:collapse;border:1px solid #bbbbbb;}.wiz-editor-body td,.wiz-editor-body th {padding:4px 8px;border-collapse:collapse;border:1px solid #bbbbbb;min-height:28px;word-break:break-word;box-sizing: border-box;}.wiz-hide {display:none !important;}</style><style id="wiz_code_style">.wiz-editor-body .wiz-code-container{position: relative; padding:8px 0; margin: 5px 25px 5px 5px;text-indent:0; text-align:left;}.CodeMirror {font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; color: black; font-size: 10.5pt; font-size: 0.875rem}.wiz-editor-body .wiz-code-container .CodeMirror div {margin-top: 0; margin-bottom: 0;}.CodeMirror-lines {padding: 4px 0;}.CodeMirror pre {padding: 0 4px;}.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {background-color: white;}.CodeMirror-gutters {border-right: 1px solid #ddd; background-color: #f7f7f7; white-space: nowrap;}.CodeMirror-linenumbers {}.CodeMirror-linenumber {padding: 0 3px 0 5px; min-width: 20px; text-align: right; color: #999; white-space: nowrap;}.CodeMirror-guttermarker {color: black;}.CodeMirror-guttermarker-subtle {color: #999;}.CodeMirror-cursor {border-left: 1px solid black; border-right: none; width: 0;}.CodeMirror div.CodeMirror-secondarycursor {border-left: 1px solid silver;}.cm-fat-cursor .CodeMirror-cursor {width: auto; border: 0 !important; background: #7e7;}.cm-fat-cursor div.CodeMirror-cursors {z-index: 1;}.cm-animate-fat-cursor {width: auto; border: 0; -webkit-animation: blink 1.06s steps(1) infinite; -moz-animation: blink 1.06s steps(1) infinite; animation: blink 1.06s steps(1) infinite; background-color: #7e7;}@-moz-keyframes blink {  0% {}  50% { background-color: transparent; }  100% {}}@-webkit-keyframes blink {  0% {}  50% { background-color: transparent; }  100% {}}@keyframes blink {  0% {}  50% { background-color: transparent; }  100% {}}.CodeMirror-overwrite .CodeMirror-cursor {}.cm-tab { display: inline-block; text-decoration: inherit; }.CodeMirror-rulers {position: absolute; left: 0; right: 0; top: -50px; bottom: -20px; overflow: hidden;}.CodeMirror-ruler {border-left: 1px solid #ccc; top: 0; bottom: 0; position: absolute;}.cm-s-default .cm-header {color: blue;}.cm-s-default .cm-quote {color: #090;}.cm-negative {color: #d44;}.cm-positive {color: #292;}.cm-header, .cm-strong {font-weight: bold;}.cm-em {font-style: italic;}.cm-link {text-decoration: underline;}.cm-strikethrough {text-decoration: line-through;}.cm-s-default .cm-keyword {color: #708;}.cm-s-default .cm-atom {color: #219;}.cm-s-default .cm-number {color: #164;}.cm-s-default .cm-def {color: #00f;}.cm-s-default .cm-variable,.cm-s-default .cm-punctuation,.cm-s-default .cm-property,.cm-s-default .cm-operator {}.cm-s-default .cm-variable-2 {color: #05a;}.cm-s-default .cm-variable-3 {color: #085;}.cm-s-default .cm-comment {color: #a50;}.cm-s-default .cm-string {color: #a11;}.cm-s-default .cm-string-2 {color: #f50;}.cm-s-default .cm-meta {color: #555;}.cm-s-default .cm-qualifier {color: #555;}.cm-s-default .cm-builtin {color: #30a;}.cm-s-default .cm-bracket {color: #997;}.cm-s-default .cm-tag {color: #170;}.cm-s-default .cm-attribute {color: #00c;}.cm-s-default .cm-hr {color: #999;}.cm-s-default .cm-link {color: #00c;}.cm-s-default .cm-error {color: #f00;}.cm-invalidchar {color: #f00;}.CodeMirror-composing { border-bottom: 2px solid; }div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }.CodeMirror-activeline-background {background: #e8f2ff;}.CodeMirror {position: relative; background: #f5f5f5;}.CodeMirror-scroll {overflow: hidden !important; margin-bottom: 0; margin-right: -30px; padding: 16px 30px 16px 0; outline: none; position: relative;}.CodeMirror-sizer {position: relative; border-right: 30px solid transparent;}.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {position: absolute; z-index: 6; display: none;}.CodeMirror-vscrollbar {right: 0; top: 0; overflow-x: hidden; overflow-y: scroll;}.CodeMirror-hscrollbar {bottom: 0; left: 0 !important; overflow-y: hidden; overflow-x: scroll;}.CodeMirror-scrollbar-filler {right: 0; bottom: 0;}.CodeMirror-gutter-filler {left: 0; bottom: 0;}.CodeMirror-gutters {position: absolute; left: 0; top: -5px; min-height: 100%; z-index: 3;}.CodeMirror-gutter {white-space: normal; height: inherit; display: inline-block; vertical-align: top; margin-bottom: -30px;}.CodeMirror-gutter-wrapper {position: absolute; z-index: 4; background: none !important; border: none !important;}.CodeMirror-gutter-background {position: absolute; top: 0; bottom: 0; z-index: 4;}.CodeMirror-gutter-elt {position: absolute; cursor: default; z-index: 4; text-align: center;}.CodeMirror-gutter-wrapper ::selection { background-color: transparent }.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent }.CodeMirror-lines {cursor: text; min-height: 1px;}.CodeMirror pre {-moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; border-width: 0; background: transparent; font-family: inherit; font-size: inherit; margin: 0; white-space: pre; word-wrap: normal; line-height: inherit; color: inherit; z-index: 2; position: relative; overflow: visible; -webkit-tap-highlight-color: transparent; -webkit-font-variant-ligatures: contextual; font-variant-ligatures: contextual;}.CodeMirror-wrap pre {word-wrap: break-word; white-space: pre-wrap; word-break: normal;}.CodeMirror-linebackground {position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: 0;}.CodeMirror-linewidget {position: relative; z-index: 2; overflow: auto;}.CodeMirror-widget {}.CodeMirror-rtl pre { direction: rtl; }.CodeMirror-code {outline: none;}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber {-moz-box-sizing: content-box; box-sizing: content-box;}.CodeMirror-measure {position: absolute; width: 100%; height: 0; overflow: hidden; visibility: hidden;}.CodeMirror-cursor {position: absolute; pointer-events: none;}.CodeMirror-measure pre { position: static; }div.CodeMirror-cursors {visibility: hidden; position: relative; z-index: 3;}div.CodeMirror-dragcursors {visibility: visible;}.CodeMirror-focused div.CodeMirror-cursors {visibility: visible;}.CodeMirror-selected { background: #d9d9d9; }.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }.CodeMirror-crosshair { cursor: crosshair; }.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }.cm-searching {background: #ffa; background: rgba(255, 255, 0, .4);}.cm-force-border { padding-right: .1px; }@media print {  .CodeMirror div.CodeMirror-cursors {visibility: hidden;}}.cm-tab-wrap-hack:after { content: ""; }span.CodeMirror-selectedtext { background: none; }.CodeMirror-activeline-background, .CodeMirror-selected {transition: visibility 0ms 100ms;}.CodeMirror-blur .CodeMirror-activeline-background, .CodeMirror-blur .CodeMirror-selected {visibility:hidden;}.CodeMirror-blur .CodeMirror-matchingbracket {color:inherit !important;outline:none !important;text-decoration:none !important;}.CodeMirror-sizer {min-height:auto !important;}</style><style name="wiz_code_style" id="wiz_code_style-monokai">.cm-s-monokai.CodeMirror { background: #272822; color: #f8f8f2; }.cm-s-monokai div.CodeMirror-selected { background: #49483E; }.cm-s-monokai .CodeMirror-line::selection, .cm-s-monokai .CodeMirror-line > span::selection, .cm-s-monokai .CodeMirror-line > span > span::selection { background: rgba(73, 72, 62, .99); }.cm-s-monokai .CodeMirror-line::-moz-selection, .cm-s-monokai .CodeMirror-line > span::-moz-selection, .cm-s-monokai .CodeMirror-line > span > span::-moz-selection { background: rgba(73, 72, 62, .99); }.cm-s-monokai .CodeMirror-gutters { background: #272822; border-right: 0px; }.cm-s-monokai .CodeMirror-guttermarker { color: white; }.cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; }.cm-s-monokai .CodeMirror-linenumber { color: #d0d0d0; }.cm-s-monokai .CodeMirror-cursor { border-left: 1px solid #f8f8f0; }.cm-s-monokai span.cm-comment { color: #75715e; }.cm-s-monokai span.cm-atom { color: #ae81ff; }.cm-s-monokai span.cm-number { color: #ae81ff; }.cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute { color: #a6e22e; }.cm-s-monokai span.cm-keyword { color: #f92672; }.cm-s-monokai span.cm-builtin { color: #66d9ef; }.cm-s-monokai span.cm-string { color: #e6db74; }.cm-s-monokai span.cm-variable { color: #f8f8f2; }.cm-s-monokai span.cm-variable-2 { color: #9effff; }.cm-s-monokai span.cm-variable-3 { color: #66d9ef; }.cm-s-monokai span.cm-def { color: #fd971f; }.cm-s-monokai span.cm-bracket { color: #f8f8f2; }.cm-s-monokai span.cm-tag { color: #f92672; }.cm-s-monokai span.cm-header { color: #ae81ff; }.cm-s-monokai span.cm-link { color: #ae81ff; }.cm-s-monokai span.cm-error { background: #f92672; color: #f8f8f0; }.cm-s-monokai .CodeMirror-activeline-background { background: #373831; }.cm-s-monokai .CodeMirror-matchingbracket {text-decoration: underline; color: white !important;}</style></head>

<body class="wiz-editor-body"  spellcheck="false"><div></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">log4j2.xml文件詳解:</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;"><b>一、前言</b>:在講日誌具體配置前,講一下log4j日誌的基本概念:</span></div><div><img src="file:///C:/Users/felixtao/Documents/My%20Knowledge/temp/950768ef-4014-4ca5-a0bf-8c1443297838/128/index_files/5d5a6dd1-0440-4de0-9bad-454e3ca11982.png" class=""></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">一個app如果要輸出日誌,首先需要獲取一個日誌器,用以打印日誌。如上圖中app下方擁有多個日誌器:logger1、logger2、root(這是默認的日誌器,當獲取對應名稱的日誌器失敗時,以該日誌器打印日誌)。一個日誌器可以綁定到多個日誌源上,例如控制檯、文件、網絡等。</span><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;color:rgb(255, 0, 0);">log4j2.xml即用於定義日誌器、定義輸入源</span><span style="font-size:1.167rem;">。</span></div><div><span style="font-size:1.167rem;"><br></span></div><div><span style="font-size:1.167rem;"><b>二、配置詳解</b>:</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">在<span>log4j2.xml的</span>文件中需要添加&lt;Configuration&gt;根元素、添加&lt;Properties&gt;、&lt;Appender&gt;、&lt;Loggers&gt;三個子元素。</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">&lt;Configuration&gt;:</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">可以<span data-wiz-span="data-wiz-span" style="color:rgb(255, 0, 0);">配置status、monitorInterval屬性</span>,status屬性是控制log4j2本身的日誌等級,如果太低就會出現很多雜亂的日誌。monitorIntervel是控制多久讀取一次log4j2.xml文件,可以不重啓時更改日誌輸入方式。</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">&lt;Properties&gt;</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">定義一個變量。</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">&lt;Appender&gt;</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">定義一系列輸出源,用以指定輸出源,輸出格式。</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">&lt;Loggers&gt;</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">定義日誌器,用以在代碼中獲取日誌器,並綁定一個或者多個輸出源,輸出日誌</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;"><br></span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;"><br></span></div><div><span style="font-size:1.167rem;"><span data-wiz-span="data-wiz-span" style="background-color:rgb(255, 255, 153);">1. &lt;Properties&gt;</span></span></div><div><span style="font-size:1.167rem;">在該配置元素中添加&lt;Property&gt;子元素,一般是定義一些全局變量。</span></div><div data-mode="XML" data-theme="monokai"  id="wiz_cm_1547821398743_4059" class="wiz-code-container"><textarea style="display: none;">&lt;Property name="LOG_HOME"&gt;${sys:log.home}&lt;/Property&gt;</textarea><wiz_code_mirror><div class="CodeMirror CodeMirror-wrap cm-s-monokai" data-id="wiz_cm_1547821398743_4059"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 20px; left: 33px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 29px; margin-bottom: 0px; border-right-width: 30px; min-height: 31px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><div class="CodeMirror-linenumber CodeMirror-gutter-elt"><div>1</div></div></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class=" wiz-hide wiz_CodeMirror-cursors"><div class="CodeMirror-cursor" style="left: 4px; top: 0px; height: 23px;">&nbsp;</div></div><div class="CodeMirror-code" role="presentation"><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">1</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">Property</span> <span class="cm-attribute">name</span>=<span class="cm-string">"LOG_HOME"</span><span class="cm-tag cm-bracket">&gt;</span>${sys:log.home}<span class="cm-tag cm-bracket">&lt;/</span><span class="cm-tag">Property</span><span class="cm-tag cm-bracket">&gt;</span></span></pre></div></div></div></div></div></div><div style="position: absolute; height: 13px; width: 1px; border-bottom-width: 0px; border-bottom-style: solid; border-bottom-color: transparent; top: 31px;"></div><div class="CodeMirror-gutters" style="height: 61px;"><div class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 29px;"></div></div></div></div></wiz_code_mirror></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;"><br></span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;background-color:rgb(255, 255, 153);">2. &lt;Appender&gt;</span></div><div><span style="font-size: 1.167rem; line-height: 31.7424px; background-color: rgb(255, 255, 153);">定義輸出源類型、輸出源地址、輸出源的輸出格式</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">定義一個特定輸出源:</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">1)多種輸出源:</span></div><div><span style="font-size:1.167rem;">在此元素下定義輸出源,<span data-wiz-span="data-wiz-span" style="color:rgb(255, 0, 0);">輸出源可以爲多種類型</span>:</span><span style="font-size:1.167rem;">&lt;RollingFile&gt;、&lt;Console&gt;、&lt;File&gt;、&lt;RollingRandomAccessFile&gt;、&lt;NoSql&gt;、&lt;Flume&gt;、&lt;Async&gt;等,分別代表可以輸出到控制檯、輸出到文件、輸出到可切分的文件。</span></div><div><span style="font-size:1.167rem;"><br></span></div><div><span style="font-size:1.167rem;">2)不同輸出源的配置:</span></div><div><span style="font-size:1.167rem;">不同輸出源的配置不盡相同,在這些不同日誌輸出源標籤中可以<span data-wiz-span="data-wiz-span" style="color:rgb(255, 0, 0);">定義屬性<span data-wiz-span="data-wiz-span" style="color:rgb(0, 0, 0);">和</span>子元素,</span>屬性中包括name、fianName、filePattern等字段,定義輸出源的名、文件名、日誌切分的實施形式等,</span><span style="font-size:1.167rem;"><span>具體不同的輸出源不同。</span></span><span style="font-size:1.167rem;">在輸出源標籤內部元素可以定義&lt;PatternLayout&gt;標籤來<span data-wiz-span="data-wiz-span" style="color:rgb(255, 0, 0);">定義</span></span><span style="font-size:1.167rem;"><span><span data-wiz-span="data-wiz-span" style="color:rgb(255, 0, 0);">日誌格式</span></span></span><span style="font-size:1.167rem;">。</span></div><div><span style="font-size:1.167rem;">各種輸出源的配置參數不一樣,其中的&lt;RollingFile&gt;輸出源格式如下:</span></div><div data-mode="XML" data-theme="monokai"  id="wiz_cm_1547821398719_1679" class="wiz-code-container"><textarea style="display: none;">&lt;RollingFile name="YOUR_APP_APPENDER" fileName="${LOG_HOME}/your_app.log"
             filePattern="${LOG_HOME}/your_app.%d{yyyy-MM-dd}.log"&gt; &lt;!--定義模板名、日誌文件名、日誌切分後的命名方式--&gt;
    &lt;PatternLayout&gt;
        &lt;Pattern&gt;%d|%level|%t|%msg%n&lt;/Pattern&gt;   &lt;!--定義日誌模板,輸出的格式--&gt;
    &lt;/PatternLayout&gt;
    &lt;Policies&gt;
        &lt;TimeBasedTriggeringPolicy interval="1" modulate="true"/&gt; &lt;!--定義切分策略--&gt;
    &lt;/Policies&gt;
&lt;/RollingFile&gt;</textarea><wiz_code_mirror><div class="CodeMirror CodeMirror-wrap cm-s-monokai" data-id="wiz_cm_1547821398719_1679"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 20px; left: 33px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 29px; margin-bottom: 0px; border-right-width: 30px; min-height: 215px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><div class="CodeMirror-linenumber CodeMirror-gutter-elt"><div>9</div></div></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class=" wiz-hide wiz_CodeMirror-cursors"><div class="CodeMirror-cursor" style="left: 4px; top: 0px; height: 23px;">&nbsp;</div></div><div class="CodeMirror-code" role="presentation"><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">1</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">RollingFile</span> <span class="cm-attribute">name</span>=<span class="cm-string">"YOUR_APP_APPENDER"</span> <span class="cm-attribute">fileName</span>=<span class="cm-string">"${LOG_HOME}/your_app.log"</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">2</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-attribute">filePattern</span>=<span class="cm-string">"${LOG_HOME}/your_app.%d{yyyy-MM-dd}.log"</span><span class="cm-tag cm-bracket">&gt;</span> <span class="cm-comment">&lt;!--定義模板名、日誌文件名、日誌切分後的命名方式--&gt;</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">3</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">PatternLayout</span><span class="cm-tag cm-bracket">&gt;</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">4</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">Pattern</span><span class="cm-tag cm-bracket">&gt;</span>%d|%level|%t|%msg%n<span class="cm-tag cm-bracket">&lt;/</span><span class="cm-tag">Pattern</span><span class="cm-tag cm-bracket">&gt;</span> &nbsp; <span class="cm-comment">&lt;!--定義日誌模板,輸出的格式--&gt;</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">5</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-tag cm-bracket">&lt;/</span><span class="cm-tag">PatternLayout</span><span class="cm-tag cm-bracket">&gt;</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">6</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">Policies</span><span class="cm-tag cm-bracket">&gt;</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">7</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">TimeBasedTriggeringPolicy</span> <span class="cm-attribute">interval</span>=<span class="cm-string">"1"</span> <span class="cm-attribute">modulate</span>=<span class="cm-string">"true"</span><span class="cm-tag cm-bracket">/&gt;</span> <span class="cm-comment">&lt;!--定義切分策略--&gt;</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">8</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-tag cm-bracket">&lt;/</span><span class="cm-tag">Policies</span><span class="cm-tag cm-bracket">&gt;</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">9</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket">&lt;/</span><span class="cm-tag">RollingFile</span><span class="cm-tag cm-bracket">&gt;</span></span></pre></div></div></div></div></div></div><div style="position: absolute; height: 13px; width: 1px; border-bottom-width: 0px; border-bottom-style: solid; border-bottom-color: transparent; top: 215px;"></div><div class="CodeMirror-gutters" style="height: 245px;"><div class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 29px;"></div></div></div></div></wiz_code_mirror></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">在&lt;RollingFile&gt;輸出源屬性:name、fileName、filePattern,分別</span><span data-wiz-span="data-wiz-span" style="color:rgb(255, 0, 0);font-size:1.167rem;">定義輸出源名</span><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">、日誌</span><span data-wiz-span="data-wiz-span" style="color:rgb(255, 0, 0);font-size:1.167rem;">文件名</span><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">、日誌</span><span data-wiz-span="data-wiz-span" style="color:rgb(255, 0, 0);font-size:1.167rem;">切分</span><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">時</span><span data-wiz-span="data-wiz-span" style="color:rgb(255, 0, 0);font-size:1.167rem;">新日誌的命名方式</span><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">。在&lt;PatternLayout&gt;子元素中&lt;Pattern&gt;中定義日誌格式(這裏用%d,%level都是一些變量)。在&lt;Policies&gt;中定義切分規則,本例中利用按天切割</span><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;background-color:rgb(255, 255, 153);">&lt;TimeBasedTriggeringPolicy&gt;,需配合filePattern一起。<span data-wiz-span="data-wiz-span" style="background-color:rgb(255, 255, 255);">至於其他的日誌輸出源具體用時可查。</span></span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;"><span data-wiz-span="data-wiz-span" style="background-color:rgb(152, 251, 152);">日誌格式的變量解釋:</span><br></span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">%d:表示時間,精確到微秒</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">%t:表示thread,線程</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">%level:表示日誌的等級</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">%msg:表示我們在代碼中打印的內容</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">%F:表示打印點文件名</span></div><div><br></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;background-color:rgb(255, 255, 153);">3. &lt;Loggers&gt;</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">輸出器:</span></div><div><span data-wiz-span="data-wiz-span" style="font-size:1.167rem;">分爲自<span data-wiz-span="data-wiz-span" style="background-color:rgb(255, 255, 153);">定義日誌器&lt;Logger&gt;和默認日誌器&lt;Root&gt;</span></span></div><div><span style="font-size:1.167rem;">定義輸出日誌的日誌器,如果沒有找到就用默認的日誌器Root打印日誌。這是因爲在程序內部打印日誌,一般會先獲取日誌輸出器,一般都是getLogger("logger_name")之類的函數,就是根據logger_name來獲取一個對應的日誌器,如果沒有或得到日誌器,就會以默認的日誌器輸出日誌。一般都是以類名來、包名來定義多個&lt;Logger&gt;,這樣對於不同的包、類採取不同的輸出方式。一個日誌器可以指定多個輸出源。具體的Logger配置:</span></div><div data-mode="XML" data-theme="monokai"  id="wiz_cm_1547821398687_9224" class="wiz-code-container"><textarea style="display: none;">&lt;Logger name="com" level="debug" additivity="false"&gt;
    &lt;appender-ref ref="YOUR_APP_APPENDER"/&gt;
&lt;/Logger&gt;</textarea><wiz_code_mirror><div class="CodeMirror CodeMirror-wrap cm-s-monokai" data-id="wiz_cm_1547821398687_9224"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 20px; left: 33px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 29px; margin-bottom: 0px; border-right-width: 30px; min-height: 77px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class=" wiz-hide wiz_CodeMirror-cursors" style="visibility: hidden;"><div class="CodeMirror-cursor" style="left: 4px; top: 0px; height: 23px;">&nbsp;</div></div><div class="CodeMirror-code" role="presentation"><div style="position: relative;" class="CodeMirror-activeline"><div class=" wiz-hide wiz_CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -29px; width: 29px;"></div><div class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">1</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">Logger</span> <span class="cm-attribute">name</span>=<span class="cm-string">"com"</span> <span class="cm-attribute">level</span>=<span class="cm-string">"debug"</span> <span class="cm-attribute">additivity</span>=<span class="cm-string">"false"</span><span class="cm-tag cm-bracket">&gt;</span></span></pre></div><div style="position: relative;" class=""><div class="CodeMirror-gutter-wrapper" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">2</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">appender-ref</span> <span class="cm-attribute">ref</span>=<span class="cm-string">"YOUR_APP_APPENDER"</span><span class="cm-tag cm-bracket">/&gt;</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -29px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">3</div></div><pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket">&lt;/</span><span class="cm-tag">Logger</span><span class="cm-tag cm-bracket">&gt;</span></span></pre></div></div></div></div></div></div><div style="position: absolute; height: 13px; width: 1px; border-bottom-width: 0px; border-bottom-style: solid; border-bottom-color: transparent; top: 77px;"></div><div class="CodeMirror-gutters" style="height: 107px;"><div class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 29px;"></div></div></div></div></wiz_code_mirror></div><div><span style="font-size:1.167rem;">name:日誌器名,在程序中調用getLogger("logger_name")時會根據logger_name匹配日誌器,該函數會<span data-wiz-span="data-wiz-span" style="color:rgb(255, 0, 0);">返回一個名字最匹配的日誌器</span>。一般<span data-wiz-span="data-wiz-span" style="color:rgb(255, 0, 0);">都定義和包名、類名相關的日誌</span>器,這樣在打印日誌時可以攜帶一些類、包名,很方便定位問題。</span></div><div><span style="font-size:1.167rem;">level:定義日誌等級,只有大於該等級的日誌纔會打印。</span></div><div><span style="font-size:1.167rem;">&lt;appender-ref&gt;:定義輸出源,一個Logger可以綁定多個輸出源。</span></div><div><br></div></body></html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章