文件操作_log日志 简单而实用

/// <summary>
/// 全局日志文件记录
/// </summary>
public class Loger
{
private static Object o = new Object();

public static string logBasePath = "";

/// <summary>
/// 写日志
/// </summary>
/// <param name="msg">要写的内容</param>
/// <returns></returns>
public static void Writer(string msg)
{
#region lock
lock (o)
{
try
{
try
{
if (!Directory.Exists(logBasePath))
{
Directory.CreateDirectory(logBasePath);
}
}
catch (Exception)
{
logBasePath="C:/Error";
if (!Directory.Exists(logBasePath))
{
Directory.CreateDirectory(logBasePath);
}
}

string fileFullPath = logBasePath + @"\" + "log_" + DateTime.Now.ToString("yyyy-MM-dd") + "Server.txt";

if (!File.Exists(fileFullPath))
{
FileStream fs = File.Create(fileFullPath);
fs.Close();
}
try
{

FileStream fs = File.Open(fileFullPath, FileMode.Append, FileAccess.Write, FileShare.Write);
StreamWriter sw = new StreamWriter(fs);
string time = DateTime.Now.ToString("hh:mm:ss:ffffff");
sw.Write("=========== " + time + " =================" + System.Environment.NewLine);
sw.Write(msg + System.Environment.NewLine);
sw.Write("=========== " + time + " ===================" + System.Environment.NewLine + System.Environment.NewLine);
sw.Flush();
sw.Close();
fs.Close();

}
catch (Exception)
{

}
}
catch (Exception)
{
}
}
#endregion
}

/// <summary>
/// 构造参数列表
/// </summary>
/// <param name="parNames"></param>
/// <param name="args"></param>
/// <returns></returns>
public static string ConnectObjectsString(string[] parNames, object[] args)
{
try
{
string strOut = System.Environment.NewLine;
for (int i = 0; i < parNames.Length; i++)
{
object o = args[i];
string name = parNames[i];
if (o == null)
{

strOut += name + " :" + " null " + System.Environment.NewLine;
}
else
{
strOut += name + " :" + o.ToString() + System.Environment.NewLine;
}
}

return strOut;
}
catch (Exception)
{
}
return "";
}

public static void Writer(Exception ex, string strMsg, string[] parNames, object[] args)
{
try
{
if (strMsg == null)
{
strMsg = "";
}
string str = Loger.ConnectObjectsString(new string[] { "ex.Message", "ex.StackTrace" }, new object[] { ex.Message, ex.StackTrace });
str += Loger.ConnectObjectsString(parNames, args);
Loger.Writer(strMsg + str);
}
catch (Exception)
{
}
}

public static void Writer(Exception ex, string strMsg)
{
try
{
if (strMsg == null)
{
strMsg = "";
}
string str = Loger.ConnectObjectsString(new string[] { "ex.Message", "ex.StackTrace" }, new object[] { ex.Message, ex.StackTrace });
Loger.Writer(strMsg + str);
}
catch (Exception)
{
}
}

//private Common.Log.LogWriter<SqlHelperCom> _logger = Common.Log.LogWriter<SqlHelperCom>.GetLogger();

//public Common.Log.LogWriter<SqlHelperCom> Logger
//{
// get { return _logger; }
// set { _logger = value; }
//}
}

public class LogPrompt
{
public static void Write(string ErrorStr)
{
Debug.WriteLine(ErrorStr);
}
}

public class MyLoger
{
private static Object o = new Object();
public static string logBasePath = "";

/// <summary>
/// 构造参数列表
/// </summary>
/// <param name="parNames"></param>
/// <param name="args"></param>
/// <returns></returns>
private static string ConnectObjectsString(string[] parNames, object[] args)
{
try
{
string strOut = System.Environment.NewLine;
for (int i = 0; i < parNames.Length; i++)
{
object o = args[i];
string name = parNames[i];
if (o == null)
{

strOut += name + " :" + " null " + System.Environment.NewLine;
}
else
{
strOut += name + " :" + o.ToString() + System.Environment.NewLine;
}
}

return strOut;
}
catch (Exception)
{
}
return "";
}
//消息是否为空
private static string ismsgnull(string strMsg)
{
if (strMsg == null)
{
strMsg = "";
}
return strMsg;
}
//构建日志存放路径
private static string getlogfilepath()
{
if (!Directory.Exists(logBasePath))
{
Directory.CreateDirectory(logBasePath);
}
string fileFullPath = logBasePath + @"\" + "log_" + DateTime.Now.ToString("yyyy-MM-dd") + "Server.txt";

if (!File.Exists(fileFullPath))
{
FileStream fs = File.Create(fileFullPath);
fs.Close();
}
return fileFullPath;
}

#region 写日志
/// <summary>
/// 写日志
/// </summary>
/// <param name="msg">要写的内容</param>
/// <returns></returns>
public static void Writer(string msg)
{
#region lock
lock (o)
{
try
{
string fileFullPath = getlogfilepath();
try
{

FileStream fs = File.Open(fileFullPath, FileMode.Append, FileAccess.Write, FileShare.Write);
StreamWriter sw = new StreamWriter(fs);
string time = DateTime.Now.ToString("hh:mm:ss:ffffff");
sw.Write("=========== " + time + " =================" + System.Environment.NewLine);
sw.Write(msg + System.Environment.NewLine);
sw.Write("=========== " + time + " ===================" + System.Environment.NewLine + System.Environment.NewLine);
sw.Flush();
sw.Close();
fs.Close();

}
catch (Exception)
{

}
}
catch (Exception)
{
}
}
#endregion
}

public static void Writer(Exception ex, string strMsg, string[] parNames, object[] args)
{
try
{
strMsg = ismsgnull(strMsg);
string str = MyLoger.ConnectObjectsString(new string[] { "ex.Message", "ex.StackTrace" }, new object[] { ex.Message, ex.StackTrace });
str += MyLoger.ConnectObjectsString(parNames, args);
MyLoger.Writer(strMsg + str);
}
catch (Exception)
{
}
}

public static void Writer(Exception ex, string strMsg)
{
try
{
strMsg = ismsgnull(strMsg);
string str = MyLoger.ConnectObjectsString(new string[] { "ex.Message", "ex.StackTrace" }, new object[] { ex.Message, ex.StackTrace });
MyLoger.Writer(strMsg + str);
}
catch (Exception)
{
}
}
#endregion
}

时间: 2024-08-13 21:38:31

文件操作_log日志 简单而实用的相关文章

文件操作的一个简单示例

在上文介绍了C中文件操作的一些基本函数,下面给一个简单例子,完成从控制台输入一段字符串,然后将其写入文件,然后从文件中读出刚刚写入的内容,代码如下: #include <stdio.h> #include <string.h> #include <stdlib.h> const int LENGTH=80; int main(void){ char mystr[LENGTH]; int lstr=0; int mychar=0; FILE * pfile=NULL; c

c语言文件操作练习--一个简单的字典查找

最近看了计科班的习题 很多都是和文件读取有关的 决定练习一下 用到的函数:freopen()以下解释来源于百度百科: freopen是被包含于C标准库头文件<stdio.h>中的一个函数,用于重定向输入输出流.该函数可以在不改变代码原貌的情况下改变输入输出环境,但使用时应当保证流是可靠的. --------------------------------------- 用这个函数可以把scanf的输入重定义到文件 在测试大量数据时非常实用. #include<stdio.h> #i

PHP 文件操作类(创建文件并写入) 生成日志

<?php /** * 文件操作(生成日志)支持多条插入 * (如果插入多条语句并换行 用','逗号分开) * */ class log { public $path = './info.txt'; //默认值文件 public $mode = 'a'; //默认追加写 public $content = '默认值:空'; //默认内容是 空 public function addlog($path = null, $mode = null, $content = null) { //判断写入的

《Java核心技术卷二》笔记(二)文件操作和内存映射文件

文件操作 上一篇已经总结了流操作,其中也包括文件的读写.文件系统除了读写以为还有很多其他的操作,如复制.移动.删除.目录浏览.属性读写等.在Java7之前,一直使用File类用于文件的操作.Java7提供了Path,Paths,Files,FileSystem等类,使文件操作变得简单和全面.此外还有很多第三方库也提供了文件操作的便捷类如common.io中的FileUtils类,Ant api提供的FileSet等类. 1.File类的使用 Java7之前版本中,File类即代表了路径对象也封装

android 简单文件操作

1.布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orient

PHP 关于文件操作的简单介绍

文件操作一直是Web程序员头疼的地方,而文件操作在CMS这样的系统中又是必须的.如今,PHP文件操作的函数内容已经非常强大,文件这部分也是学习PHP非常重要的一部分,希望大家不要忽略.这篇文章会简单介绍一下PHP的几个基本文件操作,最后附有PHP文件函数汇总,供大家参考和学习. 1. 打开文件:fopen("文件名","模式"); 模式参数: r:只读,将文件指针指向文件头. r+:读/写,将文件指针指向文件头. w:只写,打开并清空文件的内容.如果文件不存在,则创

Qt之课外实践——文件操作(简单清道夫)

说明:这个小项目是关于文件操作的.主要的功能有:重复文件的查找(根据文件的大小),说白了,就是讲大小相同的文件在一起显示出来,供用户自由的选择删除.这个360云盘里的文件去重还差的很远.还有空文件夹的查找(我们的思想是:如果一个目录下面只有.和..2个目录,则,这个文件夹就是空的.但是我们不包含文件里面套有空文件夹.),以及垃圾文件的查找(根据文件的后缀,简单判断的.). 窗体主界面: 首先程序运行前,会弹出提示对话框. 代码如下: mainwindow.h #ifndef MAINWINDOW

打造一个简单的TXT文本操作及日志框架

首先先介绍一下这个项目,该项目实现了文本写入及读取,日志写入指定文件夹或默认文件夹,日志数量控制,单个日志大小控制,通过约定的参数让用户可以用更少的代码解决问题. 1.读取文本文件方法 使用:JIYUWU.TXT.TXTHelper.ReadToString("文件物理路径") 1 public static string ReadToString(string path) 2 { 3 try 4 { 5 LogLock.EnterReadLock(); 6 StreamReader

C++ 文件操作简单总结(1)

C++文件流: fstream // 文件流 ifstream // 输入文件流 ofstream // 输出文件流 //创建一个文本文件并写入信息 //同向屏幕上输出信息一样将信息输出至文件 #include<iomanip.h> #include<fstream.h> void main() { ofstream f1("d:\\me.txt"); //打开文件用于写,若文件不存在就创建它 if(!f1)return; //打开文件失败则结束运行 f1<