格式化打印日志Java实现

版权声明:转载请注明出处及作者! https://blog.csdn.net/chenzhanhai/article/details/83352953

    日志按所在主体分为

       系统

       子系统

       模块

       子模块

   日志按严重类型分为

       信息

       警告

       错误

       致命错误

  该类被调用示例如下

LogManager logManager = new LogManager("SystemName","SubSystemName","ModuleName","SubModuleName");
   
   logManager.info("this is info message");
   logManager.warn("this is warn message");
   logManager.error("this is error message");
   logManager.fatal("this is fatal message");

  该类源码如下

package common;

import java.io.IOException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;



public class LogManager {
 
 // m_szSystemName
 private String m_szSystemName = "";
 public void setSystemName(String strSystemName){
  m_szSystemName = strSystemName;
 }
 public String getSystemName(){
  return m_szSystemName;
 }
 
 // m_szSubSystemName
 private String m_szSubSystemName = "";
 public void setSubSystemName(String strSubSystemName){
  m_szSubSystemName = strSubSystemName;
 }
 public String getSubSystemName(){
  return m_szSubSystemName;
 }
 
 // m_szMoudleName
 private String m_szMoudleName = "";
 public void setMoudleName(String strMoudleName){
  m_szMoudleName = strMoudleName;
 }
 public String getMoudleName(){
  return m_szMoudleName;
 }
 
 // m_szSubMoudleName
 private String m_szSubMoudleName = "";
 public void setSubMoudleName(String strSubMoudleName){
  m_szSubMoudleName = strSubMoudleName;
 }
 public String getSubMoudleName(){
  return m_szSubMoudleName;
 }
 
 // m_szLogContent
 private String m_szLogContent = "";
 public void setLogContent(String strLogContent){
  m_szLogContent = strLogContent;
 }
 public String getLogContent(){
  return m_szLogContent;
 }
  
 // 构造函数
    LogManager(){
  
 }
 LogManager(String strSubMoudleName){
  m_szSubMoudleName = strSubMoudleName;
 }
 LogManager(String strMoudleName,String strSubMoudleName){
  m_szMoudleName = strMoudleName;
  m_szSubMoudleName = strSubMoudleName;
 }
 LogManager(String strSubSystemName, String strMoudleName,String strSubMoudleName){
  m_szSubSystemName = strSubSystemName;
  m_szMoudleName = strMoudleName;
  m_szSubMoudleName = strSubMoudleName;
 }
 LogManager(String strSystemName, String strSubSystemName, String strMoudleName,String strSubMoudleName){
  m_szSystemName = strSystemName;
  m_szSubSystemName = strSubSystemName;
  m_szMoudleName = strMoudleName;
  m_szSubMoudleName = strSubMoudleName;
 }
 
 /**
  * print函数
  * 1.获取当前时间
  * 2.根据时间及内容组成打印字符串
  * 3.打印字符串
  *
  * nFailLevel:
  * 0 info
  * 1 warn
  * 2 error
  * 3 fatal
  *
  * */
 private void print(int nFailLevel){
  
  // 日期字符串
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        String currentTime = sdf.format(System.currentTimeMillis());
  StringBuffer sb = new StringBuffer(currentTime);
  
  // 添加错误等级
  sb.append(" ");
  
  switch(nFailLevel){
  // 0 info
  case 0:
   sb.append("info ").append(" ");
   break;
  // 1 warn
  case 1:
   sb.append("warn ").append(" ");
   break;
  // 2 error
  case 2:
   sb.append("error").append(" ");
   break;
  // 3 fatal
  case 3:
   sb.append("fatal").append(" ");
   break;
  // default info
  default:
   sb.append("info ").append(" ");
  }
  
  // 组织模块名组合
  if(m_szSystemName.length() > 0){
   sb.append("[").append(m_szSystemName).append("]");
  }
  if(m_szSubSystemName.length() > 0){
   sb.append("[").append(m_szSubSystemName).append("]");
  }
  if(m_szMoudleName.length() > 0){
   sb.append("[").append(m_szMoudleName).append("]");
  }
  if(m_szSubMoudleName.length() > 0){
   sb.append("[").append(m_szSubMoudleName).append("]");
  }
  
  // 组织打印内容
  if(m_szLogContent.length() > 0){
   sb.append(" ").append(m_szLogContent);
  }
  
  // 系统窗口打印log;
  System.out.print(sb);
  // log文件打印log
  LogFileManager logFileManager = LogFileManager.getInstance();
  logFileManager.print(sb);
  // Debug窗口打印log
  DeugFrame deugFrame = DeugFrame.getInstance();
  deugFrame.print(sb); }
 
 // info function
 public void info(String strInfo){
  m_szLogContent = strInfo + "/n";
  print(0);
 }
    public void info(String strInfo, Exception eInfo){
     m_szLogContent = strInfo + "/n";
     m_szLogContent = m_szLogContent + getExceptionString(eInfo).toString();
     print(0);
 }
 
    // warn function
 public void warn(String strInfo){
  m_szLogContent = strInfo + "/n";
  print(1);
 }
    public void warn(String strInfo, Exception eInfo){
     m_szLogContent = strInfo + "/n";
     m_szLogContent = m_szLogContent + getExceptionString(eInfo).toString();
     
     print(1);
 }
   
    // error function
 public void error(String strInfo){
  m_szLogContent = strInfo + "/n";
  print(2);
 }
    public void error(String strInfo, Exception eInfo){
     m_szLogContent = strInfo + "/n";
     m_szLogContent = m_szLogContent + getExceptionString(eInfo).toString();
     print(2);
 }
   
    // fatal function
 public void fatal(String strInfo){
  m_szLogContent = strInfo + "/n";
  print(3);
 }
    public void fatal(String strInfo, Exception eInfo){
     m_szLogContent = strInfo + "/n";
     m_szLogContent = m_szLogContent + getExceptionString(eInfo).toString();
     print(3);
 }
   
    /*
     * 根据Exception获取栈中内容
     *
     * */
    private String getExceptionString(Exception eInfo){
     StringBuffer sb = new StringBuffer(eInfo.toString() + "/n");
     StackTraceElement[] steTmp = eInfo.getStackTrace();
     
     for(int i = 0; i < steTmp.length; i++){
      sb.append(steTmp[i].toString()).append("/n");
     }
     
     return sb.toString();
    }
   
   
 public static void main(String[] args) {
  try {
   LogManager logManager = new LogManager("SystemName","SubSystemName","ModuleName","SubModuleName");
   
   logManager.info("this is info message");
   logManager.warn("this is warn message");
   logManager.error("this is error message");
   logManager.fatal("this is fatal message");
   
   try{
    String sTmp = null;
    int n = sTmp.length();
   }
   catch(Exception e1){
    logManager.info("abc",e1);
    logManager.warn("def",e1);
    logManager.error("def",e1);
    logManager.fatal("def",e1);
   }
   
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

猜你喜欢

转载自blog.csdn.net/chenzhanhai/article/details/83352953