要测这些数据,用什么工具
开发了一个软件Winform,用来接收数据放入数据库。软件运行12~24小时,就会发生一个错误,找不到错误原因。
想采集机器上的以下数据分析下,分别是:
服务端口、数据库更新日志、Com端口监听、内存和CPU使用情况。
问题一:监听这些数据可以吗???如果不是的,一般监听什么数据。
问题二:有什么工具可以自动定时/实时监听这些数据吗???
问题三:获取这些数据不会还要自己开发一个软件吧???
--------------------编程问答-------------------- --------------------编程问答-------------------- 关键还要看是什么错误 --------------------编程问答--------------------
所有问题只需在开发过程中写log既能解决。
在认为重要的地方将认为可以判定过程是否成功的数据log到一个文本,用来记录程序的过程。
--------------------编程问答--------------------
有点不明白啊。 --------------------编程问答-------------------- 看系统的事件日志,里面记录得很清楚的。 --------------------编程问答--------------------
比如,你有一个这样的工具类 MyLogger
他的实现是类似下面的
public class MyLogger
{
public static StreamWriter logWriter = new StreamWriter("D:\\log.txt",true);
public string sourceType = string.Empty;
public const string INFO_LOG = "Info";
public MyLogger(Type type)
{
this.sourceType = type.ToString();
}
public void Info(string message)
{
lock(logWriter)
{
logWriter.WriteLine(string.Format("[{0}]:[{1}]:[{2}]:{3}",INFO_LOG,this.sourceType,DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"),message));
logWriter.Flush();
}
}
}
然后在你需要监视的地方这么写,比如监视一个int number
public class Test
{
private int number = 0;
private static MyLogger logger = new MyLogger(typeof(Test));
public void TestMethod
{
//.....some operations
logger.Info(string.Format("The number is [{0}] now",number));
//....some other operations
logger.Info(string.Format("This time number is changed to {0}",number));
}
}
这样使用文本来记录操作,保持这样的习惯的话,以后你的程序发布出去之后,依然可以根据自身的log,找出release bugs的原因。
.
累死我了,这个例子是直接在论坛编辑器里面写的,可能有错误。如果你用这种方法,需要你再设计调试了。反正意思是这么个意思。 --------------------编程问答--------------------
帮顶 --------------------编程问答--------------------
顶 --------------------编程问答-------------------- 偶这有一个错误日志输出的 lz可以在你的Dbhelper直接操作库的方法中加上Try……catch 完后把catch的错误信息给输出的日志里
--------------------编程问答-------------------- 加try_catch是一个不错的方法
/// <summary>
/// 错误日志书写
/// </summary>
/// <param name="sqlStr">发生错误的sql语句或者标记</param>
/// <param name="errorMessage">错误信息</param>
public static void ErrorLogPrint(string sqlStr, string errorMessage)
{
string filePath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"\MemberWeb";
StringBuilder result = new StringBuilder("-----------------------------");
result.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
result.Append("---------------------------\r\n");
result.Append("发生错误的语句:");
result.Append(sqlStr);
result.Append("\r\n错误信息:");
result.Append(errorMessage);
if (!Directory.Exists(filePath))//文件所在路径不存在时 创建路径
{
Directory.CreateDirectory(filePath);
}
FileInfo fi = new FileInfo(filePath + @"\ErrorLog.txt");
if (!fi.Exists)//文件不存在时 创建文件
{
using (StreamWriter sw = fi.CreateText())
{
sw.WriteLine(result.ToString());
}
}
else
{
if (fi.Length >= 6000)//文件内容的长度大于一定范围时,清空
{
fi.Delete();
}
using (StreamWriter sw = fi.AppendText())
{
sw.WriteLine(result.ToString());
}
}
}
你不就是接收数据把数据放入数据库,
可以在插入数据库的地方加一些log打印日志
我们是这样做的
你可以试一下 --------------------编程问答-------------------- 好习惯 --------------------编程问答--------------------
系统的事件日志里面有“应用程序”、“系统”这两项。
“系统日志”:来源为“Print”和“TermServDevices”的,它们是什么啊???
“应用程序”:来源为“MSSQLSERVER”,类型为“失败审核”。
补充:.NET技术 , C#