如圖,類似這樣的,因為專案要改成utf-8編碼,tomcat里面組態檔改完一遍后info輸出會重復且字符出現問題

uj5u.com熱心網友回復:
明顯在迭代里拼字串了。uj5u.com熱心網友回復:
不是的,原本在logging.properties這個檔案里用gbk編碼的話是正常輸出的,tomcat命令列視窗和這個檔案改成utf-8后才出現這種情況
uj5u.com熱心網友回復:
你是想問亂碼的問題 還是想問什么呢,看這個情況,你這像是日志后面跟了個System.out.println(); 輸出一樣uj5u.com熱心網友回復:
貼出你的log配置,讓大家幫你一起看看uj5u.com熱心網友回復:
這是logback的組態檔<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定義日志檔案的存盤地址 勿在 LogBack 的配置中使用相對路徑-->
<property name="LOG_HOME" value="https://bbs.csdn.net/topics/${user.home}/znsp/logs"/>
<!-- 控制臺輸出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化輸出:%d表示日期,%thread表示執行緒名,%-5level:級別從左顯示5個字符寬度%msg:日志訊息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} %L - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILEALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志檔案輸出的檔案名-->
<FileNamePattern>${LOG_HOME}/all-logs.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志檔案保留天數-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化輸出:%d表示日期,%thread表示執行緒名,%-5level:級別從左顯示5個字符寬度%msg:日志訊息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} %L - %msg%n</pattern>
</encoder>
<!--日志檔案最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 按照每天生成日志檔案 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志檔案輸出的檔案名-->
<FileNamePattern>${LOG_HOME}/bsConfig.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志檔案保留天數-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化輸出:%d表示日期,%thread表示執行緒名,%-5level:級別從左顯示5個字符寬度%msg:日志訊息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} %L - %msg%n</pattern>
</encoder>
<!--日志檔案最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<appender name="HTTPFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志檔案輸出的檔案名-->
<FileNamePattern>${LOG_HOME}/httplog.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志檔案保留天數-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化輸出:%d表示日期,%thread表示執行緒名,%-5level:級別從左顯示5個字符寬度%msg:日志訊息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} %L - %msg%n</pattern>
</encoder>
<!--日志檔案最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<logger name="cn.com.egova" level="info" additivity="false" >
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT"/>
</logger>
<logger name="javamelody" level="info" additivity="false" >
<appender-ref ref="HTTPFILE"/>
<appender-ref ref="STDOUT"/>
</logger>
<!-- 日志輸出級別 -->
<root level="INFO">
<appender-ref ref="FILEALL"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>
然后是tomcat里頭的配置:
1.catlina.bat設定set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG% -Dfile.encoding=UTF-8"
2.logging.properties設定java.util.logging.ConsoleHandler.encoding = UTF-8,這個檔案里頭有四處這樣的都改了
3.然后再改Tomcat的cmd視窗編碼為utf-8(65001)
目前問題是,logback里頭的配置是一直沒變的,但是之前tomcat里面的各項配置設定為GBK的話CMD視窗顯示正常,然后tomcat配置里面都改成UTF-8就會出現上述問題
uj5u.com熱心網友回復:
之前用GBK編碼輸出是不會有問題的,切換到UTF-8就有問題了
uj5u.com熱心網友回復:
組態檔全部換成utf -8編碼,有的沒有更換肯定uj5u.com熱心網友回復:
之前一直是GBK?好像GBK和UTF字符集在轉換的時候,因為存盤位元組數不一致,所以有些字一定亂碼樣。
uj5u.com熱心網友回復:
能換的我都換了,tomcat的catalina.bat, logging.properties, server.xml,不知道哪里還能換
uj5u.com熱心網友回復:
補充一個情況,tomcat在啟動自帶的root專案的時候,cmd視窗設定編碼為utf-8也是會出現這種問題,所以不是專案的問題。服務器系統是 win server 2008 R2,這個專案在我本地按同樣配置運行是正常的,本地是win10系統,我懷疑是系統的問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29478.html
標籤:Web 開發
上一篇:symbolic breakpoint 是什么作用? 和方法斷點有什么區別?
下一篇:值傳遞參考傳遞判斷
