C#实现将程序运行信息写入日志的方法

本文实例讲述了C#实现将程序运行信息写入日志的方法。分享给大家供大家参考。具体如下:

1.LogManager类

class LogManager
{
 static object locker = new object();
 /// <summary>
 /// 重要信息写入日志
 /// </summary>
 /// <param name="logs">日志列表,每条日志占一行</param>
 public static void WriteProgramLog(params string[] logs)
 {
  lock (locker)
  {
   string LogAddress = Environment.CurrentDirectory + "\\Log";
   if (!Directory.Exists(LogAddress + "\\PRG"))
   {
    Directory.CreateDirectory(LogAddress + "\\PRG");
   }
   LogAddress = string.Concat(LogAddress, "\\PRG\\",
    DateTime.Now.Year, '-', DateTime.Now.Month, '-',
    DateTime.Now.Day, "_program.log");
   StreamWriter sw = new StreamWriter(LogAddress, true);
   foreach (string log in logs)
   {
    sw.WriteLine(string.Format("[{0}] {1}", DateTime.Now.ToString(), log));
   }
   sw.Close();
  }
 }
}

2.调用方法

复制代码 代码如下:

LogManager.WriteProgramLog("日志1", "日志2", "日志3");

3.运行结果

希望本文所述对大家的C#程序设计有所帮助。

时间: 2015-08-14

c#程序定期把内存信息记录到log日志示例

设立一个定时器tmrMonitor,该定时器会在程序运行时不断把程序的占用内存和占用线程数写到LOG\MEM目录下.我设置的定时器间隔是3000毫秒,记录后的信息可以用来分析一段时间内程序的运行状况,比如内存泄漏问题. 复制代码 代码如下: /// <summary>/// Timer组件tmrMonitor的Tick事件/// </summary>/// <param name="sender"></param>/// <para

将文件夹下所有文件输出到日志文件中 c#递归算法学习示例

算法文章,总是带给我们无穷的思考和兴趣,一个问题,多种解决方法,看你如何去思考它,对于标题所引出的问题,我觉得,使用递归是比较有效的方法,当然递归还有很多使用场合,如树型分类列表的操作等等. 注意: 使用递归时,初学者要特别注意的就是"出口",必须为递归提供一个出口,否则你的内存就要溢出了,呵呵,memory overflow大家肯定都见过,都是从那时候过来的,呵呵. 代码中的递归: 复制代码 代码如下: static void GetFiles(List<string>

C#实现程序单例日志输出功能

对于一个完整的程序系统,一个日志记录是必不可少的.可以用它来记录程序在运行过程中的运行状态和报错信息.比如,那些不想通过弹框提示的错误,程序执行过程中捕获的异常等. 首先,在你的解决方案中,适当的目录中新建一个类,比如 LogManager: 编写如下代码: /// <summary> /// 日志管理 /// </summary> public class LogManager { private string _logDir; // 日志文件存放目录 private stati

C#控制台程序使用Log4net日志组件详解

C#控制台程序使用Log4net日志组件,供大家参考,具体内容如下 1.Log4net一般都不陌生,但是在配置上不同类型的项目又不相同的地方比如C#控制台程序和C# MVCWeb项目,拿控制台项目为例 项目源码在文章底部 2.首先创建一个控制台程序,引入Log4net.dll --使用NuGet 3.进行一些简单的配置,在App.config文件中配置,如果大家没有App.config文件,可以通过在解决方案中,添加新建项→应用程序配置文件,进行添加. <?xml version="1.0

易语言控制台程序调用窗口的组件详解

最近有小伙伴问我,易语言的模块或者控制台程序怎么调用窗口的组件,现在我发经验,喜欢的关注哦,给大家解决了,大神不要喷 其实易语言里面的那些按钮啊编辑框啊都是类,什么是类自己百度,不啰嗦.其实易语言里面的那些按钮啊编辑框啊都是类,什么是类自己百度,不啰嗦. 而在窗口显示的其实是类实体化,有可视类(可以看见.点击等)的属性类型而在窗口显示的其实是类实体化,有可视类(可以看见.点击等)的属性类型 向文本型啊,整数型啊都是一个类型,不过是原生的支持库的,科普完成向文本型啊,整数型啊都是一个类型,不过是原

微信小程序中的swiper组件详解

微信小程序中的swiper组件 微信小程序中的swiper组件真的是简单方便 提供了页面中图片文字等滑动的效果 <swiper> <swiper-item></swiper-item> <swiper-item></swiper-item> <swiper-item></swiper-item> </swiper> 这里的就是一个滑块视图容器:而就是你希望滑动的东西,可以是文字也可以是image 其中swipe

微信小程序 modal弹框组件详解

微信小程序  modal: 这里对微信小程序中 modal组件进行详细解析,我想开发微信小程序的小伙伴可以用到,这里小编就记录下modal的知识要点. modal modal类似于javascript中的confirm弹框,默认情况下是一个带有确认取消的弹框,不过点击取消后弹框不会自动隐藏,需要通过触发事件调用函数来控制hidden属性. 官方文档 .wxml <modal hidden="{{hidden}}" title="这里是title" confir

微信小程序自定义模态弹窗组件详解

小程序自带一个showModal弹窗,调用很简单,但是限制很多,title有字数限制,中间的content也只能放文字不能放组件,所以作为一个前端碰到那种连续好几个跟微信自带的模态弹窗风格一模一样,但是功能又花里胡哨的UI稿,就不能忍受频繁的复制粘贴了.自己写了一个组件,虽然调用起来比微信自带的麻烦一点,但是还蛮实用的. 效果大概长这样. 上代码: wxml: <!-- 自定义模态弹窗 --> <view class="modalDIY" wx:if="{{

微信小程序 radio单选框组件详解及实例代码

微信小程序单选框radio 相关文章: 微信小程序 Button 微信小程序 radio 微信小程序 slider 微信小程序 switch 微信小程序 textarea 微信小程序 picker-view 微信小程序 picker 微信小程序 label 微信小程序 input 微信小程序 form 微信小程序 checkbox 实现效果图: radio-group 单选群组,内部由多个radio组成 属性名 类型 默认值 说明 bindchange EventHandle   radio-g

微信小程序 WXDropDownMenu组件详解及实例代码

微信小程序 WXDropDownMenu组件详解,这里给个小的示例,帮助大家学习理解, 功能: 适用于商品列表筛选与功能菜单跳转 先来看下效果图: 思路与步骤: 布局方面,整体使用dl来写,二级包在dd中,用ul li来写:交互方面,点击某一级菜单,关闭兄弟子菜单,点击某子菜单关闭所有菜单. 1.使用dt做出第一级菜单 2.使用dd嵌套第二级菜单,初始隐藏.position为absolute,使用z-index浮出页面层 /*总菜单容器*/ .menu { display: block; hei

springboot配置logback日志管理过程详解

这篇文章主要介绍了springboot配置logback日志管理过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先书写logback-spring.xml文件为: <?xml version="1.0" encoding="UTF-8"?> <configuration> <springProperty scope="context" name="

微信小程序 滚动选择器(时间日期)详解及实例代码

微信小程序  滚动选择器(时间日期)详解 微信小程序自己封装了很多控件,用起来确实很方便,如果这是Android里面,还需要自己去定义,不废话,效果图: 一起来看看怎么实现的呢?看完你应该就该说,尼玛,这就行啦-. 这个效果呢,要用到picker组件,动画从底部弹起的滚动选择器,现支持三种选择器,通过mode来区分,分别是普通选择器,时间选择器,日期选择器,默认是普通选择器. 看下相应的属性: 具体的来看看代码,布局: <view class="section" > <

微信小程序支付及退款流程详解

首先说明一下,微信小程序支付的主要逻辑集中在后端,前端只需携带支付所需的数据请求后端接口然后根据返回结果做相应成功失败处理即可.我在后端使用的是php,当然在这篇博客里我不打算贴一堆代码来说明支付的具体实现,而主要会侧重于整个支付的流程和一些细节方面的东西.所以使用其他后端语言的朋友有需要也是可以看一下的.很多时候开发的需求和相应问题的解决真的要跳出语言语法层面,去从系统和流程的角度考虑.好的,也不说什么废话了.进入正题. 一. 支付 支付主要分为几个步骤: 前端携带支付需要的数据(商品id,购