using log4net;
using System;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace WX.CRM.Common
{
public class LogHelper
{
public static ILog log = LogManager.GetLogger(typeof(LogHelper));
public static void Error(Exception ex)
{
log.Error(ex);
}
public static void Error(string msg)
{
Task.Run(() => WriteLogByTask(msg, 2));
}
public static void Error(string msg, Exception ex)
{
log.Error(msg, ex);
}
public static void Info(string msg)
{
Task.Run(() => WriteLogByTask(msg, 1));
}
///
/// 异步调用
///
///
/// 1:info 2: error 3: debug
public static void WriteLogByTask(string msg, int type)
{
msg = encryPhone(msg);
switch (type)
{
case 1:
log.Info(msg);
break;
case 2:
log.Error(msg);
break;
case 3:
log.Debug(msg);
break;
}
}
///
/// 手机号正则匹配加密 手机号日志需以非数字开头 非数字结尾
///
///
///
public static string encryPhone(string msg)
{
try
{
// 使用正则表达式匹配手机号
string pattern = @"(\D\d{3})\d{4}(\d{4}\D.*)";
string replacement = "$1****$2";
//msg = Regex.Replace(msg, pattern, replacement);
Regex regex = new Regex(pattern);
//Match集合,匹配成功的字符串集合
MatchCollection collection = regex.Matches(msg);
//遍历Match集合,取出值
string telephone;
foreach (Match item in collection)
{
foreach (Group group in item.Groups)
{
telephone = group.Value.Trim();
//偶尔会出现重复提取,所以加了去重判断
msg = Regex.Replace(msg, pattern, replacement);
}
}
return msg;
}
catch (Exception ex)
{
LogHelper.Error($"加密手机号错误{ex.Message}");
return msg;
}
}
public static void Debug(string msg)
{
Task.Run(() => WriteLogByTask(msg, 3));
}
}
}