using System;
using System.Collections.Generic;
using System.Text;
using WCS.Data.Models;
using System.Linq;
namespace WCS.Data.Utils
{
///
/// 日志消息处理辅助类
///
public class LogMessageHelper
{
///
/// 记录日志消息
/// 是否写入log4net
/// 消息
public static void RecordLogMessage(string message, bool isWriteLog4net = true,string level= "ERROR")
{
try
{
System.Diagnostics.StackTrace ss = new System.Diagnostics.StackTrace(true);
System.Reflection.MethodBase mb = ss.GetFrame(1).GetMethod();
//System.Reflection.MethodBase.GetCurrentMethod().Name;
var log = new WCS_LOG();
log.LOG_WCSSYSTEM = BaseCurrent.WcsSystem;
log.LOG_LEVEL = level;
log.LOG_FUNC = mb.Name;
log.LOG_INFO = message;
log.LOG_INFODTL = string.Empty;
log.LOG_ADDUSERNO = BaseCurrent.WcsSystem;
log.LOG_ADDUSERNAME = BaseCurrent.WcsSystem;
log.LOG_ADDDATETIME = DateTime.Now;
log.LOG_EDITUSERNO = BaseCurrent.WcsSystem;
log.LOG_EDITUSERNAME = BaseCurrent.WcsSystem;
log.LOG_EDITDATETIME = DateTime.Now;
if (isWriteLog4net)
{
Log4netHelper.Logger_Error.Error(message);
}
ThreadHelper.TaskThread(RecordLogMsg, log);
}
catch (Exception e)
{
Log4netHelper.Logger_Error.Error(e.ToString());
}
}
///
/// 记录日志消息
///
/// 消息
/// 异常类
/// 是否写入log4net
public static void RecordLogMessage(string message, Exception ex, bool isWriteLog4net = true, string level = "ERROR")
{
try
{
var log = new WCS_LOG();
log.LOG_WCSSYSTEM = BaseCurrent.WcsSystem;
log.LOG_LEVEL = LogLevelEnum.ERROR.ToString();
log.LOG_FUNC = ex.TargetSite.Name;
log.LOG_INFO = message;
log.LOG_INFODTL = ex.ToString();
log.LOG_ADDUSERNO = BaseCurrent.WcsSystem;
log.LOG_ADDUSERNAME = BaseCurrent.WcsSystem;
log.LOG_ADDDATETIME = DateTime.Now;
log.LOG_EDITUSERNO = BaseCurrent.WcsSystem;
log.LOG_EDITUSERNAME = BaseCurrent.WcsSystem;
log.LOG_EDITDATETIME = DateTime.Now;
if (isWriteLog4net)
{
Log4netHelper.Logger_Error.ErrorFormat("消息:{0} 异常详情:{1}", message, ex.ToString());
}
ThreadHelper.TaskThread(RecordLogMsg, log);
}
catch (Exception e)
{
Log4netHelper.Logger_Error.Error(e.ToString());
}
}
///
/// 记录日志消息
///
/// 异常类
/// 是否写入log4net
public static void RecordLogMessage(Exception ex, bool isWriteLog4net = true)
{
try
{
var log = new WCS_LOG();
log.LOG_WCSSYSTEM = BaseCurrent.WcsSystem;
log.LOG_LEVEL = LogLevelEnum.ERROR.ToString();
log.LOG_FUNC = ex.TargetSite.Name;
log.LOG_INFO = ex.Message;
log.LOG_INFODTL = ex.ToString();
log.LOG_ADDUSERNO = BaseCurrent.WcsSystem;
log.LOG_ADDUSERNAME = BaseCurrent.WcsSystem;
log.LOG_ADDDATETIME = DateTime.Now;
log.LOG_EDITUSERNO = BaseCurrent.WcsSystem;
log.LOG_EDITUSERNAME = BaseCurrent.WcsSystem;
log.LOG_EDITDATETIME = DateTime.Now;
if (isWriteLog4net)
{
Log4netHelper.Logger_Error.Error(ex.ToString());
}
ThreadHelper.TaskThread(RecordLogMsg, log);
}
catch (Exception e)
{
Log4netHelper.Logger_Error.Error(e.ToString());
}
}
private static void RecordLogMsg(WCS_LOG logmsg)
{
var logmessage = BaseCurrent.Wcs_LogSet.FirstOrDefault(v => v.LOG_INFO == logmsg.LOG_INFO);
TryCachHelper.TryExecute((db) =>
{
if (logmessage == null)
{
//插入日志
db.Insertable(logmsg).ExecuteCommand();
}
else if (logmessage.LOG_EDITDATETIME.AddMilliseconds(60000) < DateTime.Now)//相同消息1分钟修改一次
{
//更新日志时间
db.Updateable(it => new WCS_LOG() { LOG_EDITDATETIME = DateTime.Now, LOG_INFODTL = logmsg.LOG_INFODTL })
.Where(it => it.LOG_ID == logmessage.LOG_ID)
.ExecuteCommand();
}
});
}
}
}