Log 程式庫
piLog 程式庫
package com.PowerIntegral;
import java.util.*;
import java.net.*;
import java.io.Serializable;
import org.apache.log4j.*;
import org.apache.log4j.PropertyConfigurator;
import com.PowerIntegral.*;
/**
* <p>Title: piLog</p>
*
* <p>Description: piLog: 日誌函式庫</p>
*/
public class piLog implements Serializable {
private Logger _Logger = Logger.getRootLogger();
/**
* LogData: 日誌參數
*/
public Data LogData = null;
private Properties _Configuration = null;
private String _HostName = "localhost", _HostIP = "127.0.0.1";
/**
* Init: 初始物件
*
* @param MyProperties Properties => 已預載 Log4J 設定屬性物件
*/
private void Init(java.util.Properties MyProperties) {
try {
InetAddress _InetAddress = InetAddress.getLocalHost();
byte[] _ipAddr = _InetAddress.getAddress();
this._HostIP = _InetAddress.getHostAddress();
this._HostName = _InetAddress.getHostName();
} catch (Exception ex) {
}
LogData = new Data(this._HostName, this._HostIP);
if (MyProperties == null) {
this._Configuration = this.getDefaultLogConfiguration();
} else {
this._Configuration = new Properties();
this._Configuration.putAll(MyProperties);
}
PropertyConfigurator.configure(this._Configuration);
}
/**
* piLog: 建構子
*
* @param PropertyFile String => Log4J 設定屬性檔名
*/
public piLog(String PropertyFile) {
piProperty _piProperty = new piProperty();
this._Configuration = new Properties();
_piProperty.Load(this._Configuration, PropertyFile);
Init(this._Configuration);
}
/**
* piLog: 建構子
*
* @param MyProperties java.util.Properties => 已預載 Log4J 設定屬性物件
*/
public piLog(java.util.Properties MyProperties) {
Init(MyProperties);
}
/**
* piLog: 建構子, 預設為 DEBUG, 輸出至螢幕
*/
public piLog() {
Init(this.getDefaultLogConfiguration());
}
/**
* getConfiguration: 取得設定屬性
*
* @return Properties
*/
public Properties getConfiguration() {
return this._Configuration;
}
/**
* getDefaultLogConfiguration: 設定 Log4J 預設屬性物件, 預設為 DEBUG, 輸出至螢幕
*
* @return Properties
*/
private java.util.Properties getDefaultLogConfiguration() {
java.util.Properties _Properties = new java.util.Properties();
_Properties.setProperty("log4j.rootLogger",
"DEBUG");
_Properties.setProperty("log4j.addivity.org.apache", "false");
_Properties.setProperty("log4j.threshold", "DEBUG");
_Properties.setProperty("log4j.logger.DEBUG.access", "DEBUG");
_Properties.setProperty("log4j.appender.DEBUG",
"org.apache.log4j.ConsoleAppender");
_Properties.setProperty("log4j.appender.DEBUG.threshold", "DEBUG");
_Properties.setProperty("log4j.appender.DEBUG.Target", "System.out");
_Properties.setProperty("log4j.appender.DEBUG.layout",
"org.apache.log4j.PatternLayout");
_Properties.setProperty("log4j.appender.DEBUG.layout.ConversionPattern",
"[" + this._HostName + "::" + this._HostIP +
"::PowerIntegral] %d - %c -%-4r [%t] %-5p %c %x - %m%n");
return _Properties;
}
public class Data {
/**
* ApplicationName: 應用系統代碼, 請使用統一長度
*/
public String ApplicationName = "";
/**
* ModuleName: 模組系統代碼, 請使用統一長度
*/
public String ModuleName = "";
/**
* UserID: 用戶代碼, 請使用統一長度
*/
public String UserID = "";
/**
* MessageType: 訊息類別
*/
public int MessageType = 0;
/**
* Message: 訊息, 訊息請避免使用空白 (White Space), 空白會被轉為 "^".
*/
public String Message = "";
/**
* HostName: 本機名
* HostIP: 本機 IP
*/
public String HostName = "localhost", HostIP = "127.0.0.1";
/**
* Data: 建構子
*/
public Data() {
try {
InetAddress _InetAddress = InetAddress.getLocalHost();
this.HostIP = _InetAddress.getHostAddress();
this.HostName = _InetAddress.getHostName();
} catch (Exception ex) {
}
}
/**
* Data: 建構子
*/
public Data(String HostName, String HostIP) {
this.HostName = HostName;
this.HostIP = HostIP;
}
/**
* getFullMessage: 產生預設日誌訊息, 訊息中空白 (White Space) 會被轉為 "^".
* @return String
*/
public String getFullMessage() {
String _Message[] = {"", ""};
_Message[0] = "[" + LogData.ApplicationName.trim() + "|" +
LogData.ModuleName.trim() + "|" +
LogData.UserID.trim() + "@" + this.HostName + "::" +
this.HostIP + "|" +
String.valueOf(LogData.MessageType) + "|" +
LogData.Message.trim() + "]";
_Message[1] = com.PowerIntegral.piString.ReplaceAll(_Message[0],
" ", "^");
return _Message[1];
}
/**
* getFullMessage: 產生日誌訊息, 訊息中空白 (White Space) 會被轉為 "^".
*
* @param MessageType int => 訊息類別
* @param Message String => 訊息, 訊息中空白 (White Space) 會被轉為 "^".
* @return String
*/
public String getFullMessage(int MessageType, String Message) {
String _Message[] = {"", ""};
_Message[0] = "[" + LogData.ApplicationName.trim() + "|" +
LogData.ModuleName.trim() + "|" +
LogData.UserID.trim() + "@" + this.HostName + "::" +
this.HostIP + "|" +
String.valueOf(MessageType) + "|" +
Message.trim() + "]";
_Message[1] = com.PowerIntegral.piString.ReplaceAll(_Message[0],
" ", "^");
return _Message[1];
}
}
/**
* Log: 紀錄日誌
*
* @param LogLevel int => 日誌層級, 0=DEBUG, 1=INFO, 2=WARN, 3=ERROR, 4=FATAL
* @param MessageType int => 訊息類別
* @param Message String => 訊息內容
*/
public void Log(int LogLevel, int MessageType, String Message) {
switch (LogLevel) {
case 0:
_Logger.debug(LogData.getFullMessage(MessageType, Message.toString()));
break;
case 1:
_Logger.info(LogData.getFullMessage(MessageType, Message.toString()));
break;
case 2:
_Logger.warn(LogData.getFullMessage(MessageType, Message.toString()));
break;
case 3:
_Logger.error(LogData.getFullMessage(MessageType, Message.toString()));
break;
case 4:
_Logger.fatal(LogData.getFullMessage(MessageType, Message.toString()));
break;
}
}
/**
* Debug: 紀錄除錯預設訊息
*/
public void Debug() {
_Logger.debug(LogData.getFullMessage());
}
/**
* Debug: 紀錄除錯訊息
*
* @param MessageType int => 訊息類別
* @param Message String => 訊息內容
*/
public void Debug(int MessageType, String Message) {
_Logger.debug(LogData.getFullMessage(MessageType, Message.toString()));
}
/**
* Info: 紀錄資訊預設訊息
*/
public void Info() {
_Logger.info(LogData.getFullMessage());
}
/**
* Info: 紀錄資訊訊息
*
* @param MessageType int => 訊息類別
* @param Message String => 訊息內容
*/
public void Info(int MessageType, String Message) {
_Logger.info(LogData.getFullMessage(MessageType, Message.toString()));
}
/**
* Warn: 紀錄警告預設訊息
*/
public void Warn() {
_Logger.warn(LogData.getFullMessage());
}
/**
* Warn: 紀錄警告訊息
*
* @param MessageType int => 訊息類別
* @param Message String => 訊息內容
*/
public void Warn(int MessageType, String Message) {
_Logger.warn(LogData.getFullMessage(MessageType, Message.toString()));
}
/**
* Error: 紀錄錯誤預設訊息
*/
public void Error() {
_Logger.error(LogData.getFullMessage());
}
/**
* Error: 紀錄錯誤預設訊息
*
* @param MessageType int => 訊息類別
* @param Message String => 訊息內容
*/
public void Error(int MessageType, String Message) {
_Logger.error(LogData.getFullMessage(MessageType, Message.toString()));
}
/**
* Fatal: 紀錄嚴重錯誤預設訊息
*/
public void Fatal() {
_Logger.fatal(LogData.getFullMessage());
}
/**
* Fatal: 紀錄嚴重錯誤預設訊息
*
* @param MessageType int => 訊息類別
* @param Message String => 訊息內容
*/
public void Fatal(int MessageType, String Message) {
_Logger.fatal(LogData.getFullMessage(MessageType, Message.toString()));
}
}