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()));

}

}