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

一,在使用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. centos7利用acme.sh获取Let's Encrypt的永久免费ssl证书并配置网站域名https访问

    acme.sh介绍:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E github:https://github.com/Neil ...

  2. HDU5126 stars(cdq分治)

    传送门 题意: 先有两种操作,插入和查询,插入操作则插入一个点\((x,y,z)\),查询操作给出两个点\((x_1,y_1,z_1),(x_2,y_2,z_2)\),回答满足\(x_1\leq x\ ...

  3. Alibaba Cloud SDK for Java,知识点

    资料 网址 Alibaba Cloud SDK for Java https://help.aliyun.com/document_detail/52740.html?spm=a2c4g.111742 ...

  4. 2019南昌网络赛I:Yukino With Subinterval(CDQ) (树状数组套主席树)

    题意:询问区间有多少个连续的段,而且这段的颜色在[L,R]才算贡献,每段贡献是1. 有单点修改和区间查询. 思路:46min交了第一发树套树,T了. 稍加优化多交几次就过了. 不难想到,除了L这个点, ...

  5. maven 配置参数详解

    引自:搬砖工的奋斗史www.cnblogs.com/laobiao/p/5589025.html <project xmlns="http://maven.apache.org/POM ...

  6. mybatis框架-使用resultMap实现高级结果映射,collection属性的使用

    需求:获取指定用户的用户信息和地址列表 修改user实体类  添加集合的引用. /** * 根绝用户id,获取该角色下的地址信息 * @param userID * @return */ public ...

  7. 转 Git生成SSH

    SSH keys SSH key 可以让你在你的电脑和Code服务器之间建立安全的加密连接. 先执行以下语句来判断是否已经存在本地公钥: cat ~/.ssh/id_rsa.pub 如果你看到一长串以 ...

  8. Ant Design的Form

    Ant Design的Form 使用onFieldsChange时不要与 mapPropsToFields一起使用,将导致表单校验等失效

  9. Python面向对象 | 初识

    一.面向对象编程 类 : 具有相同属性和技能的一类事物 对象: 就是对一个类的具体的描述 实例化:类——>对象的过程 使用面向对象的好处: 使得代码之间的角色关系更加明确 增强了代码的可扩展性 ...

  10. ESA2GJK1DH1K基础篇: 测试APP使用SmartConfig绑定Wi-Fi 设备并控制设备

    前言 实现功能概要 STM32控制WI-Fi模块以AT指令TCP透传方式连接MQTT服务器, 实现MQTT通信控制. 测试准备工作(详细下载步骤请参考 硬件使用说明 ) 一,下载单片机程序 二,安装A ...