这两天忙里偷闲整理开发了个小的日志分析工具,没错,是给自己使用的,工欲善其事必先利其器。
先说一下痛点,
1、经常会遇到需要在外网服务器上调试的情况,此时只能通过日志来调试信息。
2、当使用记事本打开日志文件后,如果有新日志信息的话,记事本并不能自动刷新,需要关闭后重新打开才行,叠加升级时可能已经将日志所在的文件夹窗口关闭,从而需要重新找到日志文件夹,然后再打开日志文件并且翻到最底部才能看到最新的日志内容,这个过程就很繁琐,经常性出现任务栏有几十个记事本程序在运行(忘记关闭),偶尔还会因为日志版本问题导致看错。
3、另外,日志内容会随着调试越来越多,尤其是当我打开日志的debug模式后,日志内容增长的更快。这时想从日志文件中找一条自己想要看到的内容还是比较难的,看的眼花缭乱,虽然记事本可以搜索,但效果并不好,而且无法按日志级别筛选。
4、如果像我这种可以远程服务器,直接到服务器中打开日志文件的话,就很不友好,调试个日志需要通过远程操作,既费流量,又费神。
5、如果碰到无法远程的服务器调试时,这就遇到了问题,所以如果能够远程读取和分析日志就好了,此时想到了ftp,使用ftp将日志下载下来看也能解决问题,但是依然比较繁琐。
6、如果服务器无法使用ftp时也是个问题。
综上所述,如果能做个小工具解决以上痛点,日后开发工作必定事半功倍吧!
功能如下:
1、支持自动刷新,并且刷新后需要自动跳到最底部;支持手动刷新;
2、支持自动获取当前文件夹下的最新日志文件;
3、支持对日志级别进行过滤;
4、支持输入关键字进行过滤;
5、可以手动选择切换日志文件;
6、支持ftp模式,通过ftp支持以上所有功能;
7、支持http模式,允许不支持ftp功能的时候,通过http来访问;
8、支持随时手动切换三种模式;
9、支持浏览ftp文件;支持浏览http文件;
10...
一开始想着做个本地的简易日志分析工具,结果做完了感觉不过瘾,然后又抓紧增加了ftp功能,这样就可以再本地检测服务器的日志内容,结果发现电脑设置了代理,ftp不支持访问,无奈之下,又去开发了一个http端的服务器端代码,然后使用http方式来分析日志。
public class AppConfigModel
{
public int Mode = 1;//1本地,2ftp,3http
public LocalConfigModel LocalConfig { set; get; }
public FtpConfigModel FtpConfig { set; get; }
public HttpConfigModel HttpConfig { set; get; }
}
public class HttpConfigModel
{
public string BaseUrl { set; get; }
public string Path { set; get; }
public string Filename { get; set; }
public string Username { set; get; }
public string Password { set; get; }
}
public class LocalConfigModel
{
public string Filename {set; get; }
}
#region 获取上级文件夹目录
public static string GetParentPath(string path,int parentNum = 1, bool trimEnd = false)
{
var paths = path.Split('\\', '/');
var parentPath = "";
paths = paths.Where(d => !string.IsNullOrWhiteSpace(d)).ToArray();
for (var i = 0; i < paths.Length - parentNum; i++)
{
parentPath += paths[i] + (paths[i].StartsWith("ftp:") ? "//" : "/");
}
if (trimEnd)
{
parentPath = parentPath.TrimEnd('\\', '/');
}
return parentPath;
}
#endregion
===========自动刷新效果动画==============
===========网络文件管理动画效果==============
ftp模式截图:
本地模式截图:
HTTP模式截图:
浏览和选择网络文件:
FTP配置:
HTTP配置:
工作模式切换功能:
日志级别筛选功能: