异常日志文件errorlong
#region log
////////////////////use///////////////
/// <summary>
/// 异常日志
/// </summary>
/// <param name="ex">Exception ex</param>
/// <param name="flagTypeRemark">异常类型备注</param>
public void LogException(Exception ex, string flagTypeRemark = "**")
{
AppPath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"file\Error\";
log(AppPath, "\r\n##" + flagTypeRemark + "##\r\nMessage:" + ex.Message + "\r\nStacktrace:" + ex.StackTrace + "\r\n");
} /// <summary>
/// 本地日志记录
/// </summary>
/// <param name="logPath">日志路径</param>
/// <param name="logContent">要记录的日志内容</param>
public static void log(string logPath, string logContent)
{
string filePath = AppPath + "elog.log";
string content = DateTime.Now.ToString("yyyyMMddHHmmss:") + logContent;
if (!System.IO.Directory.Exists(AppPath)) System.IO.Directory.CreateDirectory(AppPath);
if (!System.IO.File.Exists(filePath))
{
System.IO.File.AppendAllText(filePath, content);
return;
}
ParameterizedThreadStart threadStart = new ParameterizedThreadStart(writeLog);
Thread thread = new Thread(threadStart);
thread.Name = "Pro_ErrorLog.log";
thread.Start(logContent);
} /// <summary>
/// 当前程序运行路径
/// </summary>
public static string AppPath { get; set; } public static void writeLog(object str)
{
string filePath = AppPath + "elog.log";
string content = "\r\n" + DateTime.Now.ToString("yyyyMMddHHmmss:") + str.ToString();
System.IO.FileInfo info = new System.IO.FileInfo(filePath);
if (info.Length > * * )
{
while (IsFileInUse(filePath))
Thread.Sleep();
string backPath = AppPath + @"BackError\";
if (!System.IO.Directory.Exists(backPath)) System.IO.Directory.CreateDirectory(backPath);
System.IO.File.Move(filePath, backPath + "elog" + DateTime.Now.ToString("yyyyMMdd") + ".log");
System.IO.File.Delete(filePath);
}
while (IsFileInUse(filePath))
Thread.Sleep();
if (!IsFileInUse(filePath))
{
#region write file
System.IO.FileStream fs = null;
try
{
fs = new System.IO.FileStream(filePath, System.IO.FileMode.Append, System.IO.FileAccess.Write, System.IO.FileShare.None);
fs.Write(Encoding.UTF8.GetBytes(content), , Encoding.UTF8.GetByteCount(content));
}
catch
{
;
}
finally
{
if (fs != null)
fs.Close();
}
#endregion
}
} /// <summary>
/// 文件是否被占用??
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static bool IsFileInUse(string fileName)
{
bool inUse = true;
System.IO.FileStream fs = null;
try
{
fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.None);
inUse = false;
}
catch
{
inUse = true;
}
finally
{
if (fs != null)
fs.Close();
}
return inUse;
}
#endregion
//use
LogException(ex, "异常类型备注文本");//
异常日志文件errorlong的更多相关文章
- Oracle 监听器日志文件过大导致监听异常
Oracle 监听器日志文件过大导致监听异常 db版本:11.2.0.1 os版本:windows2008 现象: 应用异常,无法连接数据库.登陆数据库服务器,查看监听已经断掉.尝试重启监听,重启失败 ...
- log4j.properties配置与将异常输出到Log日志文件实例
将异常输出到 log日志文件 实际项目中的使用: <dependencies> <dependency> <groupId>org.slf4j</groupI ...
- C# 插件热插拔 .NET:何时应该 “包装异常”? log4.net 自定义日志文件名称
C# 插件热插拔 所谓热插拔就是插件可以 在主程序不重新启动的情况直接更新插件, 网上有很多方案: https://www.cnblogs.com/happyframework/p/3405811 ...
- Log4Net异常日志记录在asp.net mvc3.0的应用
前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual ...
- 记一次log4j日志文件输出错误的解决
log4j错误信息:log4j:ERROR Failed to rename [D:/logs/wmts_] to [D:/logs/wmts_2015-12-21.log ]. 起因:部门网站使用B ...
- Log4net按照不同级别写入多个日志文件
[assembly: log4net.Config.XmlConfigurator(Watch = true)]//注入 在一个Web应用项目中,我使用了Fluent NHibernate作为数据访问 ...
- Android中对Log日志文件的分析[转]
一,Bug出现了, 需要“干掉”它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只要你会看bug, a ...
- 使用Log4Net完成异常日志处理
1.在MVC的Modal文件夹建一个异常处理过滤器 public class MyExceptionAttribute:HandleErrorAttribute { public static Que ...
- SQL Server 2008 收缩日志 清空删除大日志文件 转载
SQL Server 2008 收缩日志 清空删除大日志文件 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)Ba ...
随机推荐
- vue实现无缝滚动
vue实现无缝滚动 标签部分 <div style="height: 260px; width: 50%;display: inline-block;float: right; ove ...
- 万恶之源-python的进化
列表 列表的增删改查 3. 列列表的嵌套 元组和元组嵌套 5. range ⼀一. 列表 1.1 列表的介绍 列表是python的基础数据类型之⼀一 ,其他编程语⾔言也有类似的数据类型. 比如JS中的 ...
- LMS自适应天线阵列设计 MATLAB
在自适应天线课上刚刚学了LMS自适应阵,先出一个抢先版贴一下结果,抢先某个小朋友一步. 关于LMS的具体介绍,直接看wiki里的吧,解释的比书上简明:传送门:https://en.wikipedia. ...
- Vue 指令总结大全
1.v-text v-text主要用来更新textContent. <p>{{msg}}</p>与<p v-text="msg2"></p ...
- 正则表达式 第六篇:调用CLR函数执行正则查询
在SQL Server数据库中可以执行模糊查询,像like子句,和全文查询(Fulltext search),但是无法直接执行正则查找,SQL Server没有执行正则表达式的内置函数,但是我们可以创 ...
- 2019年12月1日Linux开发手记
配置ubuntu摄像头: 1.设置→添加→usb控制器→兼容usb3.0 2.虚拟机→可移动设备→web camera→连接(断开主机) 3.查看是否配置成功,打开终端,输入: susb ls /de ...
- 迈进java初中级程序员分水岭是否合格?十个题告诉你!
前言 不论你是职场新人还是步入职场N年的职场新人大哥大~当然这个N<3~,我能担保你答不对这十个题~不要问我为什么这么自信~,这些个题还是"有水平"的javase的基础题,传 ...
- Unicode和Ascii的区别
计算机只能处理数字,如果要处理文本,就必须把文本转换成数字. 最早的计算机设计采用8bit作为一个字节,所以,一个字节只能表示的最大整数255. 0-255被用来表示数字和一些符号,这个编码 ...
- 我的 Input框 不可能这么可爱
<input /> 标签是我们日常开发中非常常见的替换元素了,但是最近在刷 whattwg 跟 MDN 的时候发现 跟 <input /> 有很多相关的属性,选择器都没怎么用过 ...
- 删除排序数组中的重复项II
Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most twic ...