導航:首頁 > 編程語言 > java設置字元集

java設置字元集

發布時間:2024-09-19 11:47:34

java日誌框架:slf4j作用及其實現原理

日誌技術框架一覽

JUL:JDK中的日誌記錄工具,也常稱為JDKLog、jdk-logging。

LOG4J1:一個具體的日誌實現框架。

LOG4J2:一個具體的日誌實現框架,是LOG4J1的下一個版本。

LOGBACK:一個具體的日誌實現框架,但其性能更好。

JCL:一個日誌門面,提供統一的日誌記錄介面,也常稱為commons-logging。

SLF4J:一個日誌門面,與JCL一樣提供統一的日誌記錄介面,可以方便地切換看具體的實現框架。

注意:JUL、LOG4J1、LOG4J2、LOGBACK是日誌實現框架,而JCL、SLF4J是日誌實現門面(介面)。

SLF4J結構概述

slf4j只是一個日誌標准,並不是日誌系統的具體實現。理解這句話非常重要,slf4j只做兩件事情:

提供日誌介面

提供獲取具體日誌對象的方法如如上圖所示:SLF4J作為日誌列印實現的適配層,業務代碼不需要關心具體使用哪一種日誌系統,且如何列印日誌。

SLF4J簡單Demo

1.引入對應jar包

25<dependency>26<groupId>org.slf4j</groupId>27<artifactId>slf4j-api</artifactId>28<version>1.7.32</version>29</dependency>30<dependency>31<groupId>ch.qos.logback</groupId>32<artifactId>logback-classic</artifactId>33<version>1.2.6</version>34</dependency>

2.增加配置文件log4j2.xml放在resource目錄下:

<?xmlversion="1.0"encoding="UTF-8"?><configuration><!--<includeresource="org/springframework/boot/logging/logback/base.xml"/>--><!--appenders--><appendername="DEFAULT-APPENDER"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_PATH}/common.log</file><encoder><pattern>[%d][%level][%X{xRequestId}]%logger-%m%n</pattern><charset>UTF-8</charset><!--此處設置字元集--></encoder><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--dailyrollover--><fileNamePattern>${LOG_PATH}/common.log.%d{yyyy-MM-dd}</fileNamePattern></rollingPolicy></appender><!--loggers--><loggername="com.zenlayer.zenconsole.ocs"level="INFO"additivity="false"><appender-refref="APP-DEFAULT-APPENDER"/><appender-refref="ERROR-APPENDER"/></logger><rootlevel="INFO"><appender-refref="DEFAULT-APPENDER"/><appender-refref="ERROR-APPENDER"/></root></configuration>

3.測試方法

=LoggerFactory.getLogger(SelectBillingOrderImplTest.class);@TestpublicvoidlogTest()throwsIOException{logger.info("");logger.warn("");logger.error("");}

4.執行結果

SLF4J原理解析

1.創建Logger對象(Logger常定義為全局單例對象)

2.getLogger方法

3.拿到實力化工場,並根據日誌類返回Logger對象

4.實力化日誌工場

5.bind方法為slf4j的核心

6.slf4j回去classPatch下面找所有org.slf4j.impl下StaticLoggerBinder這個類註:存在引入多個Log實現的情況,所以slf4j返回的是一個Set集合但是實際情況系統載入器只載入一個StaticLoggerBinder類。所以啟動時會報錯,且默認使用載入到的第一個Log實現類,然後調用改類的getSingleton方法

7.以上已經成功獲取了ILoggerFactory之後的邏輯是調用Factory的getLogger方法來獲取Logger對象。回到了源碼:3的位置

找到一種實現,我以LogBack為例:

⑵ java怎麼設置utf8

伺服器端
修改資料庫配置文件/etc/my.cnf
character-set-server=utf8mb4
collation_server=utf8mb4_unicode_ci
重啟MySQL(按照官方文答培檔,這兩個選項都是可以動態設置的,但是實際的經驗是Server必須重啟一下)
已有的表修改編碼為utf8mb4
ALTER TABLE
tbl_name
CONVERT TO CHARACTER SET
charset_name;
使用下面這個語句只是修改了表的default編碼
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;
客戶端
jdbc的連接字元串不支持utf8mb4,這個 這種方式 來解決的,如果伺服器端設置了character_set_server=utf8mb4,則客戶端會自動將傳過去的utf-8視作清和唯utf8mb4。
Connector/J did not support utf8mb4 for servers 5.5.2 and newer.
Connector/J now auto-detects servers configured with character_set_server=utf8mb4 or treats the Java encoding utf-8 passed using characterEncoding=... as utf8mb4 in the SET NAMES= calls it makes when establishing the connection. (Bug #54175)
其他的client端,比如phppython需要看下client是否支持,如果不能在連接字元串中指定的話,可以在獲取連接之後,執行」set names utf8mb4″來解決這個問題;
因為utf8mb4是utf8的超集,理論上即使client修改字元集為utf8mb4,也會不棚滑會對已有的utf8編碼讀取產生任何問題。

⑶ Java 如何設置打開文件內容的字元集

方法一:在Eclipse里設置

1、windows->Preferences...打開"首選項"對話框,左側導航樹,導航到general->Workspace,右側Text file encoding,選擇Other,改變為 utf-8(必須小寫),以後新建立工程其屬性對話框中的Text file encoding即為UTF-8。
2、windows->Preferences...打開"首選項"對話框,左側導航樹,導航到general->Content Types,右側Content Types樹,點開Text,選擇 Java Source File,在下面的Default encoding輸入框中輸入UTF-8,點Update,則設置Java文件編碼為UTF-8。然後設置jsp、js、css等類型的Default encoding,設置方式同Java Source File。
3.windows->Preferences...打開"首選項"對話框,左側導航樹,導航到MyEclipse->Files and Editors->JSP,把Encoding改為UTF-8
方法二:在代碼中設置
要是把控制台的內容輸出到文件中(輸出流)
OutputStream out = new FileOutputStream("d:\\demo.txt");
out.write("我們".getBytes());
在getBytes()里頭寫你要用的字元集,例如:out.write("我們".getBytes("UTF-8"));
要是想把文件的內容輸入到控制台中(輸入流)
InputStreamReader in = new InputStreamReader(new FileInputStream(「demo.txt」),」UTF-8」);

⑷ eclipse中java中文控制台輸出的這種亂碼怎麼解決

eclipse中java中文控制台輸出的這種亂碼解決方式:

一、(1)打開eclipse或myeclipse,點擊run-》runconfigurations

二、方法如下:

打開eclipse.ini文件(在eclipse的安裝目錄)添加上這句話 -Dfile.encoding = utf-8,設置系統屬性file.encoding為utf-8.

閱讀全文

與java設置字元集相關的資料

熱點內容
給文件上鎖加密還能刪除不 瀏覽:809
增長率超過10簡便演算法 瀏覽:290
安卓什麼桌面組件好用 瀏覽:465
求知課堂python2020 瀏覽:262
kafka刪除topic命令 瀏覽:759
phpsql單引號 瀏覽:86
英雄聯盟壓縮壁紙 瀏覽:452
辦公app需要什麼伺服器 瀏覽:628
安卓伺服器怎麼獲得 瀏覽:808
空調壓縮機冷媒的作用 瀏覽:781
淘寶app是以什麼為利的 瀏覽:657
java提取圖片文字 瀏覽:924
我的世界手機版指令復制命令 瀏覽:35
java判斷字元串為數字 瀏覽:926
androidrpc框架 瀏覽:490
雲伺服器essd和ssd 瀏覽:524
家用網關的加密方式 瀏覽:3
怎麼從ppt導出pdf文件 瀏覽:973
換汽車空調壓縮機軸承 瀏覽:845
平板怎麼登錄安卓端 瀏覽:197