using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using CS = System.Console; namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
CS.ForegroundColor = DefaultForeColor;
CS.BackgroundColor = DefaultBackColor;
CS.Clear();
CS.Title = "日志查询工具";
Msg(LogHelper.HelpText); while (true)
{
var line = CS.ReadLine().ToLower();
if (line == "help")
{
Msg(LogHelper.HelpText);
continue;
} if (line == "cls")
{
CS.Clear();
continue;
} if (line == "ec")
{
LogHelper.IsPro = !LogHelper.IsPro; if (LogHelper.IsPro)
{
Msg("切换为生产环境日志查询...");
}
else
{
Msg("切换为测试环境日志查询...");
}
continue;
} new LogHelper(line).Open(); }
} public static void Msg(string str)
{
Show(str, MessageForeColor);
} public static void Show(string message, ConsoleColor color)
{
CS.ForegroundColor = MessageForeColor;
CS.WriteLine(message);
CS.ForegroundColor = DefaultForeColor;
} public static ConsoleColor DefaultForeColor = ConsoleColor.White;
public static ConsoleColor DefaultBackColor = ConsoleColor.DarkBlue;
public static ConsoleColor MessageForeColor = ConsoleColor.DarkCyan; public class LogHelper
{
public static string HelpText; private const int support = ; public static bool IsPro; public static List<string> KeyList = new List<string> { "xx", "yy", "zz", "" };
public static List<string> TitleList = new List<string> { "可定检查", "创建订单", "提交订单", "中间产品层" }; static LogHelper()
{
HelpText = "k+数字(默认是k1):\n\r ";
for (var i = ; i < TitleList.Count; i++)
{
HelpText += (i + ) + "." + TitleList[i] + "\n\r ";
}
HelpText += "默认会员,协议在数字前加0\n\rd/h+数字(默认是d7):\n\r 1.一天(h是小时)内日志\n\r 2.两天(h是小时)内日志\n\r 以此类推...\n\ro+数字:\n\r 打开ordeidr=数字的日志\n\rr+数字:\n\r 打开roomId=数字的日志\n\ru+卡号:\n\r 开的uid=卡号的日志\n\rc+数字:\n\r 打开cityID=数字的日志\n\rhelp:查看命令\n\rcls:清除屏幕\n\rec切换生产/测试环境";
} private string cmd, o, r, u, c;//o==orderid ,r == roomid,u=uid,c=cityid
private int k, d, h;
public LogHelper(string cmd)
{
this.cmd = cmd.ToLower();
} private int GetNumber(string prefix)
{
var contract = ;
var match = GetStr(prefix);
if (string.IsNullOrEmpty(match)) return ;
if (match.StartsWith(""))
{
contract = ;
}
return Convert.ToInt32(match) + contract;
} private string GetStr(string prefix)
{
Regex reg = new Regex(prefix + @"(\d+)", RegexOptions.Compiled);
return reg.Match(cmd).Groups[].ToString();
} public void Open()
{
k = GetNumber("k");
d = GetNumber("d");
h = GetNumber("h"); o = GetStr("o");
r = GetStr("r");
u = GetStr("u");
c = GetStr("c");
//Msg(d.ToString() + k + h);
string result = string.Empty;
var dateStr = string.Empty;
var key = string.Empty;
var end = DateTime.Now; if (d > )
{
var begin = end.AddDays(-d);
dateStr = getDateStr(begin, end);
}
else if (h > )
{
var begin = end.AddHours(-h);
dateStr = getDateStr(begin, end);
}
else
{
var begin = end.AddDays(-);
dateStr = getDateStr(begin, end);
} if (k > && k < support)
{
key = "key=" + KeyList[k - ];
}
else if (k >= support)
{
key = "key=" + KeyList[k - support];
}
else
{
key = "key=" + KeyList[];
} Msg(string.Format("正在打开{0}{1}日志...", GetLogMsg(), IsPro ? "(生产环境)" : "(测试环境)"));
Thread.Sleep();
//System.Diagnostics.Process.Start("chrome.exe", "http:\\www."+line+".com");
} private string GetLogMsg()
{
var result = string.Empty;
if (d > )
{
result += d + "天内的";
}
else if (h > )
{
result += h + "小时内的";
}
else
{
result += "7天内的";
} if (k > && k < support)
{
result += "会员" + TitleList[k - ];
}
else if (k >= support)
{
result += "协议" + TitleList[k - support];
}
else
{
result += "会员" + TitleList[];
} if (!string.IsNullOrEmpty(o))
{
result += "&" + "orderId=" + o;
} if (!string.IsNullOrEmpty(r))
{
result += "&" + "roomId=" + r;
} if (!string.IsNullOrEmpty(u))
{
result += "&" + "uid=" + u;
} if (!string.IsNullOrEmpty(c))
{
result += "&" + "cityId=" + c;
} return result;
} private string getDateStr(DateTime begin, DateTime end)
{
string tf = "{0}~{1}";
var dformat = "yyyy-MM-dd HH:mm:ss";
return string.Format(tf, end.ToString(dformat), end.ToString(dformat));
}
}
}
}

REPL LOG的更多相关文章

  1. Windows 2008 R2 域控制器迁移至windows 2016记录

    文章参考 https://social.technet.microsoft.com/Forums/zh-CN/21a5f5e9-feee-4454-acad-fd22989d7bed/22495296 ...

  2. MySQL主从复制邮件报警脚本

    #!/bin/shexport PATH=$PATH:/application/mysql/3306/binlogFile=`date +"%Y-%m-%d %H:%M:%S"`_ ...

  3. Windows DC域控由server08r2升级至server2016测试

    测试环境 原DC: csctest.com CSCDC01 192.168.100.1 server08r2 CSCDC02 192.168.100.2 server08r2 要求: 原两台旧主机均更 ...

  4. go log repl

    package main import ( "fmt" "os/exec" "regexp" "strconv" &qu ...

  5. node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法

    1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...

  6. Node.js之路【第二篇】Nodejs中的pip(NPM)&REPL

    什么是NPM 在学Python的时候我们肯定会使用第三方模块或者编写模块供别人使用,我们有一个非常好用的pip来帮我们管理我们的模块包!那么Nodejs重的模块包呢? 对没错就是NPM,他是随同Nod ...

  7. REPL环境

    一.Node的REPL基本操作 REPL(Read-eval-print-loop):交互式解析器 在REPL环境下,可以定义和运行变量.函数.对象. REPL的常用命令: 进入node,即进入了RE ...

  8. ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

    salve复制线程停止,尝试start slave 时报ERROR 1872错误mysql> system perror 1872 MySQL error code 1872 (ER_SLAVE ...

  9. Node.js系列基础学习----安装,实现Hello World, REPL

    Node.js基础学习 简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一 ...

随机推荐

  1. asp.net中验证控件的使用方法

    用于检查是否有输入值 :RequiredFieldValidator(必须字段验证) 按设定比较两个输入 :CompareValidator(比较验证) 输入是否在指定范围 :RangeValidat ...

  2. 【android studio】android studio使用过程中,搜集的一些问题

    1.[知乎]在Android Studio中如何将依赖的jar包放在SDK的android.jar前? 在编译原生Contacts应用时需用到非公开的API,需要引入framework等jar包,但在 ...

  3. C++ substr() 和 Java substring() 区别

    Java和C++中都有关于子字符串的操作,C++中是substr(),Java中是substring(),两者的用法上稍有些区别,首先针对只有一个参数的情况: s.substr(start) 和 s. ...

  4. 实现AJAX的基本步骤 。。转

    要完整实现一个AJAX异步调用和局部刷新,通常需要以下几个步骤: (1)创建XMLHttpRequest对象,也就是创建一个异步调用对象. (2)创建一个新的HTTP请求,并指定该HTTP请求的方法. ...

  5. Hadoop.2.x_网站PV示例

    一.网站基本指标(即针对于网站用户行为而产生的日志中进行统计分析) 1. PV:网页浏览量(Page View页面浏览次数,只要进入该网页就产生一条记录,不限IP,统计点每天(较多)/每周/每月/.. ...

  6. django数据库动态添加列

    方法一: python manage.py migrate 方法二: python manage.py migrate 效果: ---〉

  7. 运维、linux运维是什么?

    从不知道运维是什么 到后来接触了linux运维 后来玩遍了运维常用的各种开源软件发现原来运维是这么回事 又到了后来,运维真的是我理解的这些吗?会软件,会配置,会部署.会调优,会处理故障...但是总觉得 ...

  8. CSS重新认识(一)

    1. 所有的元素都遵循盒子模型,即内容部分+padding(填充部分)+border+margin(外边距部分); 2.我们平常定义的width与height指的内容部分的长宽; 3. 行内元素在不改 ...

  9. SQL servcer 时间日期函数、数据类型转换

    1.时间日期函数 2.数据类型转换 3.习题 建立两个表,一个部门表,一个人员表.部门:部门的编号,部门的名称,部门的职责.人员:人员的编号,姓名,年龄,性别,cid所属部门

  10. Struts基础详解

    1.web.xml配置: <filter> <filter-name>Struts2</filter-name> <filter-class> org. ...