2024年9月25日 星期三

gson.JsonSyntaxException Failed parsing SQL Date

發現WAS LOG有Gson解析JSON處理DATE有異常,爬了下文多篇文章表示程式碼未異動情況下,在不同的伺服器運行的結果會不一樣,開發環境使用TOMCAT所以測不到異常? 但WEBSPHERE報錯ㄌ...

不過LOG中顯然"九月"被Decode成"????"是屬於編碼問題,所以除了格式外Charset也要處理。

LOG: has Exception:com.google.gson.JsonSyntaxException: Failed parsing '???? 22, 2024' as SQL Date

解法備忘:

在寫入BLOB時,先指定DATE FORMAT跟Charset

Gson gson = new GsonBuilder().setDateFormat("MMM dd, yyyy").create();
byte[] bdata = gson.toJson(Class()).getBytes("utf-8");

還原時,也要設定DATE FORMAT跟Charset

Gson gson = new GsonBuilder().setDateFormat("MMM dd, yyyy").create();
gson.fromJson(new String(bdata, Charset.forName("utf-8")), XXX.class);


2024年9月5日 星期四

Logback 轉 Log4j2 套用備忘(JAVA 8)

嘗試這把專案Logback 改 Log4j2來處理日誌問題,備忘如下:

POM.xml

add

   src\log4j2.properties

                <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.23.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.23.1</version>
</dependency>

remove 

    src\logback.xml

                <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core --> 
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.3.14</version>
</dependency>

試了好多篇文章的方法,底下這個最單純(可能也是若干文章匹配的是特定的版本造成的)
reference: https://howtodoinjava.com/log4j2/log4j2-properties-example/

小記: 原先處理的動力是因為從WAS環境(WIN)轉容器Docker(LINUX),發現Docker上系統LOG檔要提供外部去檢視的資料夾都沒法順利取得,所以改方式來寫LOG看看能不能解決,不過嘗試迄今還沒成功 Orz...