1. 程式人生 > >Linux下Tomcat控制檯輸出及日誌中文亂碼問題的解決

Linux下Tomcat控制檯輸出及日誌中文亂碼問題的解決

 剛寫了個定時器,呼叫網上流傳的飛信API,實現每天每週的固定時間給特定的手機號上發簡訊提醒的功能。按照網上資料,使用的Servlet監聽器+Timer類。

      剛開始完全照搬人家的例子,倒也正常。後來查API時看到到Timer有個方法:

"void schedule(TimerTask task, Date time) 安排在指定的時間執行指定的任務。"

不禁大喜,覺得正合這個場景麼,於是沒仔細想就改寫了程式碼。不過寫到一半突然發現這個定時器方法只能執行一次啊,那怎麼才能每天都重複執行,看來這個思路不對,還得用:

"void schedule(TimerTask task, Date firstTime, long period)
          安排指定的任務在指定的時間開始進行重複的固定延遲執行。"才行。每隔一分鐘執行一次Task,其實也就是獲得當前時間與設定的時間對比,若相同則執行任務方法。

      這次算是沒什麼問題了,於是放到伺服器上想測試下,不曾想卻遭遇了亂碼問題,Linux主機上的tomcat控制檯輸出的中文都是亂碼,日誌檔案中也是。網上翻了半天資料,發現大多講的不詳細,我等菜鳥實在不知如何操作。

"因為每一個應用都會啟動一個Java程序,啟動方法就是 java $OPTS com.xxx.xxx.xxx
其中變數$OPTS就是我們要設定的JVM的啟動引數。在這裡設定JVM的字符集。設定如下:
-Ddefault.client.encoding=GBK -Dfile.encoding=GBK -Duser.language=Zh "

      先是找到如上資料,說要改JVM啟動引數裡的編碼設定,

可是我不知道在哪裡改,開啟catalina.sh、startup.sh等幾個檔案,裡面的指令碼程式碼看得一頭霧水,實在找不到配置項在何處,暈,在這裡到底是在哪裡啊。

      後來看到個文章說tomcat經常會發生記憶體溢位,於是修改catalina.bat,新增如下:

  1. CATALINA_OPTS="$CATALINA_OPTS -server -Xms256m -Xmx1024m -Xincgc"  
  2. echo "Using CATALINA_OPTS:   $CATALINA_OPTS"  

      於是我若有所悟,比葫蘆畫瓢的套用了下,別說,嘿!居然還真是那麼回事。