<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 日志打印規范 打印日志主要是在業務復雜的方法上進行 error:錯誤日志,指比較嚴重的錯誤,對正常業務有影響 info:信息日志,記錄排查問題的關鍵信息,如調用時間、出參入參等等; 1. 不要使用 System.out.println 這個是打印到控制臺, 不打印到日志中, 雖然控制臺輸出的內容也能保存下來, 但是到長時間運行, 文件會很大, 每次重啟會清空, 底層用了 synchronized 性能差 2. 不要使用e.printStackTrace() 和System.out.println 原因差不多, printStackTrace 底層是使用 System.err.println 3. 日志要打印出方法的入參、出參 重要的方法要打印關鍵日志, 打印入參出參, 出參數據太多要進行截取打印。 4. 多分支第一行要打印日志 用于明確進入哪個分支,方便排查問題 5. 使用參數占位{}打印 log.error("id {}", id) 6. 不要打印 e.getMessage(), 要打印的詳細些 e.getMessage() 輸出信息太少,特別是只輸出個 null的時候 log.error("", e) 打印 e, 不需要用 {} 占位符。 7. ## 日期+文件大小進行生成日志 有部分項目, 每天的日志特別大, 這里進行日期+文件大小進行生成 生成的結果如下: 數據先保存到 error.log 中, 當 error.log 文件大于 設置的大小時, 再依次生成 error.2023-06-21.0.log error.2023-06-21.1.log error.2023-06-21.2.log ![](https://img.kancloud.cn/cb/98/cb98674cde444212e8af88317ac48709_769x206.png) ``` ~~~ <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 日志存放路徑 要 修改 項目名稱 為自己的 --> <property name="log.path" value="logs/項目名稱" /> <!-- 日志輸出格式 --> <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> <!-- 控制臺輸出 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${log.pattern}</pattern> </encoder> </appender> <!-- 系統日志輸出 --> <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/info.log</file> <!-- 循環政策:基于時間和文件大小創建日志文件 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件名格式 --> <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 超過這么大就重新生成一個文件 --> <maxFileSize>50MB</maxFileSize> <!-- 日志最大的歷史 60天 --> <maxHistory>60</maxHistory> </rollingPolicy> <encoder> <pattern>${log.pattern}</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!-- 過濾的級別 --> <level>INFO</level> <!-- 匹配時的操作:接收(記錄) --> <onMatch>ACCEPT</onMatch> <!-- 不匹配時的操作:拒絕(不記錄) --> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/error.log</file> <!-- 循環政策:基于時間和文件大小創建日志文件 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 日志文件名格式 --> <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 超過這么大就重新生成一個文件 --> <maxFileSize>50MB</maxFileSize> <!-- 日志最大的歷史 60天 --> <maxHistory>60</maxHistory> </rollingPolicy> <encoder> <pattern>${log.pattern}</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!-- 過濾的級別 --> <level>ERROR</level> <!-- 匹配時的操作:接收(記錄) --> <onMatch>ACCEPT</onMatch> <!-- 不匹配時的操作:拒絕(不記錄) --> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 系統模塊日志級別控制 --> <logger name="com" level="info" /> <!-- Spring日志級別控制 --> <logger name="org.springframework" level="warn" /> <root level="info"> <appender-ref ref="console" /> </root> <!--系統操作日志--> <root level="info"> <appender-ref ref="file_info" /> <appender-ref ref="file_error" /> </root> </configuration> ~~~ ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看