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

一,在使用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. brew安装mongodb报错Error: No available formula with the name 'mongodb'

    原因:MongoDB不再是开源的了,并且已经从Homebrew中移除 #43770 设定:  $ brew tap mongodb/brew 安装: $ brew install mongodb-co ...

  2. GOJS的使用

    项目当中要求表与表之间建立关联关系,需要用到Gojs(只想说这是个什么?),以前完全没接触过gojs,所以记录下使用中的技巧和方法 http://www.devtalking.com/articles ...

  3. django+sqlite进行web开发(二)

    模板 前面的例子中,我们是直接将HTML写在了Python代码中,这种写法并不可取.我们需要使用模板技术将页面设计和Python代码分离. 模板通常用于产生HTML,但是Django的模板也能产生任何 ...

  4. 201871010118-唐敬博《面向对象程序设计(Java)》第四周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  5. SDN Reading Notes

    网络操作编程语言:Frenetic QoS策略实施框架:PolicyCop    

  6. NOIP 2006 明明的随机数

    洛谷 P1059 明明的随机数 洛谷传送门 JDOJ 1423: [NOIP2006]明明的随机数 T1 JDOJ传送门 Description 明明想在学校中请一些同学一起做一项问卷调查,为了实验的 ...

  7. hdu2281&&POJ1320——Pell方程

    hdu2281 输入一个 $N$,求最大的 $n$($n \leq N$)和 $x$,使得 $x^2 = \frac{1^2+2^2+...+n^2}{n}$. 分析: 将右边式子的分子求和化简,有: ...

  8. 关于selectpicker的多选问题

    刚开始拿到这个需要求的时候,我时很没有头绪的,再前期做的时候是将这个多选的作为一个数组,传入到后端,然后再插入数据库中,然后根据关系表查询,因为但是考虑显示的问题,不知道怎么将多选的数据显示出来,我就 ...

  9. eclipse scala语法用java检验 报错问题

    传送门 https://stackoverflow.com/questions/8522149/eclipse-not-recognizing-scala-code 还是 直接用eclipse的 sc ...

  10. Set学习笔记

    今天又去看了一下STL里的set,来这里水一下博客 What is set? set的本质是一种功能受限的平衡树,不支持重复数字,也就是说如果插入一大堆数字12,输出它的长度还是1 如何定义 定义 s ...