记录这个博客的想法只有两点,

一,在使用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#日志记录和弹出提示的更多相关文章

  1. 基于Jquery 简单实用的弹出提示框

    基于Jquery 简单实用的弹出提示框 引言: 原生的 alert 样子看起来很粗暴,网上也有一大堆相关的插件,但是基本上都是大而全,仅仅几句话可以实现的东西,可能要引入好几十k的文件,所以话了点时间 ...

  2. php 简单通用的日志记录方法

    使用file_put_contents 方法来实现简单便捷的日志记录功能 方法1: // use \r\n for new line on windows, just \n on linux func ...

  3. jquery删除记录弹出提示框

    来自于<jquery权威指南> ------------------- 点击删除时,弹出提示框,并做相应的删除确定或取消 完整代码如下: <!DOCTYPE html PUBLIC ...

  4. 基于AOP和ThreadLocal实现的一个简单Http API日志记录模块

    Log4a 基于AOP和ThreadLocal实现的一个简单Http API日志记录模块 github地址 : https://github.com/EalenXie/log4a 在API每次被请求时 ...

  5. 如果在敲代码的时候eclipse不弹出提示,怎么办?

    非常弱智的操作,我们曾经在输入System.out.println("content");的时候,当我们输入了"."之后,在输入错误,此时我们再回退至" ...

  6. 超链接 a 标签点击时,弹出提示框,可以按照如下来写

    onclick="return confirm('确定删除该条记录?')" 加上这条记录后,就可以在访问href属性指向的链接时,有弹出提示

  7. EF 在controller弹出提示消息

    第一种方式: return Content("<script>alert('此名称课程再次班级中已经存在!');window.location.href = 'Course/Cr ...

  8. android标题栏上面弹出提示框(二) PopupWindow实现,带动画效果

    需求:上次用TextView写了一个从标题栏下面弹出的提示框.android标题栏下面弹出提示框(一) TextView实现,带动画效果,  总在找事情做的产品经理又提出了奇葩的需求.之前在通知栏显示 ...

  9. android标题栏下面弹出提示框(一) TextView实现,带动画效果

    产品经理用的是ios手机,于是android就走上了模仿的道路.做这个东西也走了一些弯路,写一篇博客放在这里,以后自己也可用参考,也方便别人学习. 弯路: 1.刚开始本来用PopupWindow去实现 ...

随机推荐

  1. 安装Ubuntu后需要做的事

    卸载软件 纸牌 麻将 扫雷 数独 火狐 邮件 扫描 拍照 照片 视频 计划 日历 打印 备份 计算器 亚马逊 电源统计 音乐播放 远程桌面 To Do LibreOffice 换下载源 装机的时候下载 ...

  2. docker学习10-注册docker hub账号

    前言 Docker Hub是Docker的远程镜像仓库,是 docker 官网推出的 docker 仓库的一个公共服务器,在上面可以有私有和公有的镜像. 类似于 github,可以上传自己镜像文件,也 ...

  3. Win10开启快速启动后关机变重启

    同样可以用来解决,“msconfig引导为空”,“默认操作系统为空”,“win10改为uefi启动后关机变重启”,“legacy转uefi后无法关机” 问题起因 换完主板和cpu后,新的主板在开机时总 ...

  4. Windows下Redis安装配置和使用注意事项

    Windows下Redis安装配置和使用注意事项 一:下载 下载地址: https://github.com/microsoftarchive/redis/releases 文件介绍: 本文以3.2. ...

  5. USACO Buying Feed, II

    洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II 洛谷传送门 JDOJ 2671: USACO 2010 Jan Silver 2.Buying Feed, II ...

  6. 【数论】[圆点坐标]P2508圆上的整点

    题目描述 求一个给定的圆\(x ^2 +y ^2 = r ^2\),在圆周上有多少个点的坐标是整数 Solution 圆上的点坐标通解:\(x = d\frac{v^2-u^2}{2},y = duv ...

  7. helm原理

    Helm: helm就相当于Linux的包管理工具yum,但它管理的程序包是一些打包好的清单文件. 其核心术语: Chart:一个helm程序包,它里面可理解为,包含了一下定义Pod的清单文件,这些清 ...

  8. centos git编译

    1. 下载git源码 https://git-scm.com 2. 根据文档一步步操作 https://git-scm.com/book/en/v2/Getting-Started-Installin ...

  9. 深入理解 HTTP/1.x、HTTP/2 和 HTTPS

    很多站长可能到现在都没有理解 HTTP/1.x.HTTP/2 和 HTTPS 之间的区别和关系吧?说实话,明月也是“一知半解”的水准而已,今天看到了这篇文章感觉总结还算是比较全面,特此分享出来给大家就 ...

  10. Prometheus部署各服务的Node监控

    1.部署监控主机 部署主机监控,需要安装node_exporter 1.1 下载node exporter wget https://github.com/prometheus/node_export ...