异常日志文件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 ...
随机推荐
- Redis是什么?看这一篇就够了
本文由葡萄城技术团队编撰并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 引言 在Web应用发展的初期,那时关系型数据库受到了较为广泛的关注和应用,原 ...
- Linux root设置初始值的方法
Linux root设置初始值的方法 ubuntu默认不允许使用root登录,因此初始root账户是不能使用的,需要在普通账户下利用sudo权限修改root密码. 在终端输入sudo passwd r ...
- 正则表达式 第六篇:调用CLR函数执行正则查询
在SQL Server数据库中可以执行模糊查询,像like子句,和全文查询(Fulltext search),但是无法直接执行正则查找,SQL Server没有执行正则表达式的内置函数,但是我们可以创 ...
- python 安装resquest
本文链接:https://blog.csdn.net/charlotte1516/article/details/91991848 搬运是为了怕原链接失效,建议浏览原链接. 1.首先在开始栏搜索cmd ...
- MySQL数据库day20190922
1.dos命令 set names gbk; 2.MySQL练习#创建school数据库: create database school;#切换school数据库: use school; # pri ...
- 【数据结构】之队列(C语言描述)
队列(Queue)是编程中最常用的数据结构之一. 队列的特点是“先进先出”,就像食堂排队买饭一样,先来的人排在前面,后来的人排在后面:前面的人先买饭,买完饭后离开这个队列.这就是队列的原理,它可以进行 ...
- MySQL 高可用架构 之 MHA (Centos 7.5 MySQL 5.7.18 MHA 0.58)
目录 简介 环境准备 秘钥互信 安装基础依赖包 安装MHA组件 安装 MHA Node组件 安装 MHA Manager 组件 建立 MySQL 一主三从 初始化 MySQL 启动MySQL 并简单配 ...
- SpringCloud Alibaba微服务实战三 - 服务调用
导读:通过前面两篇文章我们准备好了微服务的基础环境并让accout-service 和 product-service对外提供了增删改查的能力,本篇我们的内容是让order-service作为消费者远 ...
- js基础-函数-var和let的区别
javaScript简介 javaScript历史 1995年,Netscape公司是凭借Navigator浏览器成为当时第一代互联网公司. 网景公司希望在HTML界面上加一点动态效果,于是叫Bren ...
- Nginx动静分离(Nginx+Tomcat)
第一步:nginx构建 第二步:Tomcat构建 1.Tomcat基础点 (1)Tomcat 是基于java开发的web容器,用来发布java代码和jsp网页. (2)开发人员开发java web网站 ...