简单的C#日志记录和弹出提示
记录这个博客的想法只有两点,
一,在使用webserver的时候如果你不好调用本地server端,那么你可以启用日志来查看异常。当然也可以调用本地的server端。这里简单说一下。不是本文的重点。
发布好本地webserver后,以管理员模式启动VS,在VS里面如图
二、在页面使用扫描枪的时候,总是弹出提示就会影响效率。所以不用弹出。我们提示在页面里面。


附件好之后启动调试吧。好了,下来我们说说今天的记录。
先上效果图。


效果是异常异常bug已经记录在日志,弹出提示显示在页面。顺便加了一个方法,给字段加双引号
好了,开始我的操作。来来来,我们开始骚操作起来。
先建一个操作类
using System;
using System.IO;
namespace FrmLogRecord
{
/// <summary>
/// 日志记录
/// </summary>
public class LogRecord
{
static string appBaseDir = AppDomain.CurrentDomain.BaseDirectory;
/// <summary>
/// 保存日志
/// </summary>
/// <param name="logStr">string 日志内容</param>
/// <param name="fileName">string 日志文件名</param>
static public void SaveLog(string logStr, string fileName = "")
{
//写文件流
StreamWriter fp = null;
if (fileName == "")
{
//文件名为空则使用但前日期,需要修正
fileName = DateTime.Today.ToShortDateString().Replace("/", "-") + "_log.txt";
}
//日志存于应用程序目录
fileName = appBaseDir + fileName; //".\\" +
//AppendText 文件不存在会自动创建
fp = File.AppendText(fileName);
//使用WriteLine写入内容和时间
fp.WriteLine(logStr + "\r\n" + DateTime.Now.ToString());
//将缓冲区的内容写入文件
fp.Flush();
//关闭rw对象
fp.Close();
}
/// <summary>
/// 字符串两边加单引号
/// </summary>
/// <param name="str">string 待处理字符串</param>
/// <returns>'string'</returns>
public static string QuotedStr(string str)
{
return "'" + str + "'";
}
}
}
在拉一个基类页面

代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace FrmLogRecord
{
public partial class ClientOperateForm : Form
{
public ClientOperateForm()
{
InitializeComponent();
}
/// 消息框每行颜色,保证在重绘时能正常显示
protected List<Brush> messageColors = new List<Brush>();
/// <summary>
/// 添加消息
/// </summary>
/// <param name="messageStr">string 消息内容 TODO 如果消息包含回车,应该拆分后再添加</param>
/// <param name="colorBrush">Brush 消息颜色刷,默认为黑色</param>
protected void AddMemoMessage(string messageStr, Brush colorBrush = null)
{
messageColors.Add(colorBrush == null ? Brushes.Red : colorBrush);
memMessage.SelectedIndex = memMessage.Items.Add(messageStr);
}
/// <summary>
/// 添加消息
/// </summary>
/// <param name="messageStr">消息内容</param>
/// <param name="color">Color 消息的颜色,最终会转成Brush</param>
protected void AddMemoMessage(string messageStr, Color color)
{
Brush colorBrush = new SolidBrush(color);
AddMemoMessage(messageStr, colorBrush);
}
/// <summary>
/// 清空消息列表
/// </summary>
protected void ClearMemoMessage()
{
memMessage.Items.Clear();
}
// 消息框的绘制事件,用于实现每行不同颜色
private void memMessage_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground(); //先调用基类实现
if (e.Index < 0 || memMessage.Items.Count <= 0) //formload时return
{
return;
}
else
{
//默认为黑色,避免直接Items.Add()时报错,但不能修正颜色错位
Brush colorBrush = (e.Index >= messageColors.Count ? Brushes.Black : messageColors[e.Index]);
e.Graphics.DrawString(memMessage.Items[e.Index].ToString(), e.Font, colorBrush, e.Bounds);
}
}
}
}
在拉一个页面

代码
using System;
using System.Drawing;
using System.Windows.Forms;
namespace FrmLogRecord
{
public partial class Form1 : ClientOperateForm
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("随便输个数字吧");
return;
}
if (textBox1.Text != "")
{
string sql = "select * from dual";
LogRecord.SaveLog("异常发生在Form1.button1_Click方法中:" + sql);
AddMemoMessage("异常已记录在debug下!");
AddMemoMessage("测试成功!", Color.Blue);
AddMemoMessage("给变量加双引号:"+LogRecord.QuotedStr(textBox1.Text));
}
}
}
}
就这样O了
有问题联系QQ78474580
最好加微信同QQ
一般不上QQ
简单的C#日志记录和弹出提示的更多相关文章
- 基于Jquery 简单实用的弹出提示框
基于Jquery 简单实用的弹出提示框 引言: 原生的 alert 样子看起来很粗暴,网上也有一大堆相关的插件,但是基本上都是大而全,仅仅几句话可以实现的东西,可能要引入好几十k的文件,所以话了点时间 ...
- php 简单通用的日志记录方法
使用file_put_contents 方法来实现简单便捷的日志记录功能 方法1: // use \r\n for new line on windows, just \n on linux func ...
- jquery删除记录弹出提示框
来自于<jquery权威指南> ------------------- 点击删除时,弹出提示框,并做相应的删除确定或取消 完整代码如下: <!DOCTYPE html PUBLIC ...
- 基于AOP和ThreadLocal实现的一个简单Http API日志记录模块
Log4a 基于AOP和ThreadLocal实现的一个简单Http API日志记录模块 github地址 : https://github.com/EalenXie/log4a 在API每次被请求时 ...
- 如果在敲代码的时候eclipse不弹出提示,怎么办?
非常弱智的操作,我们曾经在输入System.out.println("content");的时候,当我们输入了"."之后,在输入错误,此时我们再回退至" ...
- 超链接 a 标签点击时,弹出提示框,可以按照如下来写
onclick="return confirm('确定删除该条记录?')" 加上这条记录后,就可以在访问href属性指向的链接时,有弹出提示
- EF 在controller弹出提示消息
第一种方式: return Content("<script>alert('此名称课程再次班级中已经存在!');window.location.href = 'Course/Cr ...
- android标题栏上面弹出提示框(二) PopupWindow实现,带动画效果
需求:上次用TextView写了一个从标题栏下面弹出的提示框.android标题栏下面弹出提示框(一) TextView实现,带动画效果, 总在找事情做的产品经理又提出了奇葩的需求.之前在通知栏显示 ...
- android标题栏下面弹出提示框(一) TextView实现,带动画效果
产品经理用的是ios手机,于是android就走上了模仿的道路.做这个东西也走了一些弯路,写一篇博客放在这里,以后自己也可用参考,也方便别人学习. 弯路: 1.刚开始本来用PopupWindow去实现 ...
随机推荐
- 安装Ubuntu后需要做的事
卸载软件 纸牌 麻将 扫雷 数独 火狐 邮件 扫描 拍照 照片 视频 计划 日历 打印 备份 计算器 亚马逊 电源统计 音乐播放 远程桌面 To Do LibreOffice 换下载源 装机的时候下载 ...
- docker学习10-注册docker hub账号
前言 Docker Hub是Docker的远程镜像仓库,是 docker 官网推出的 docker 仓库的一个公共服务器,在上面可以有私有和公有的镜像. 类似于 github,可以上传自己镜像文件,也 ...
- Win10开启快速启动后关机变重启
同样可以用来解决,“msconfig引导为空”,“默认操作系统为空”,“win10改为uefi启动后关机变重启”,“legacy转uefi后无法关机” 问题起因 换完主板和cpu后,新的主板在开机时总 ...
- Windows下Redis安装配置和使用注意事项
Windows下Redis安装配置和使用注意事项 一:下载 下载地址: https://github.com/microsoftarchive/redis/releases 文件介绍: 本文以3.2. ...
- USACO Buying Feed, II
洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II 洛谷传送门 JDOJ 2671: USACO 2010 Jan Silver 2.Buying Feed, II ...
- 【数论】[圆点坐标]P2508圆上的整点
题目描述 求一个给定的圆\(x ^2 +y ^2 = r ^2\),在圆周上有多少个点的坐标是整数 Solution 圆上的点坐标通解:\(x = d\frac{v^2-u^2}{2},y = duv ...
- helm原理
Helm: helm就相当于Linux的包管理工具yum,但它管理的程序包是一些打包好的清单文件. 其核心术语: Chart:一个helm程序包,它里面可理解为,包含了一下定义Pod的清单文件,这些清 ...
- centos git编译
1. 下载git源码 https://git-scm.com 2. 根据文档一步步操作 https://git-scm.com/book/en/v2/Getting-Started-Installin ...
- 深入理解 HTTP/1.x、HTTP/2 和 HTTPS
很多站长可能到现在都没有理解 HTTP/1.x.HTTP/2 和 HTTPS 之间的区别和关系吧?说实话,明月也是“一知半解”的水准而已,今天看到了这篇文章感觉总结还算是比较全面,特此分享出来给大家就 ...
- Prometheus部署各服务的Node监控
1.部署监控主机 部署主机监控,需要安装node_exporter 1.1 下载node exporter wget https://github.com/prometheus/node_export ...