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. mysql 查看语句的执行效率

    EXPLAIN 一.用途: 1.什么时候必须为表加入索引以得到一个使用索引找到记得的更快的select 2.知道优化器是否以一个最佳次序联结表. <官方的关于explain的文档在http:// ...

  2. jquery过滤器之:contains()、.filter()

    :contains 选择器选取包含指定字符串的元素. 该字符串可以是直接包含在元素中的文本,或者被包含于子元素中. 经常与其他元素/选择器一起使用,来选择指定的组中包含指定文本的元素,如: $(&qu ...

  3. jquery ui autocomplete 实现点击文本框,出现所有查询信息效果,与bootstrap结合使用修改样式

    直接看代码 <!doctype html> <html lang="en"> <head> <meta charset="utf ...

  4. mysql时间格式化,按时间段查询MYSQL语句

    描述:有一个会员表,有个birthday字段,值为'YYYY-MM-DD'格式,现在要查询一个时间段内过生日的会员,比如'06-03'到'07-08'这个时间段内所有过生日的会员. SQL语句: Se ...

  5. 笔记本(WIN7|XP)发射wifi信号 当无线路由使用

    Windows7系统 第一步:是你的电脑上要有两个网卡一个有线一个无线(笔记本应该都有)台式机可以考虑买个USB无线网卡(50左右) 第二步:win+R  CMD  输入(只输入红色部分) netsh ...

  6. 【iCore3 双核心板_FPGA】例程十三:FSMC总线通信实验——复用地址模式

    实验指导书及代码包下载: http://pan.baidu.com/s/1nuYpI8x iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  7. Codeforces Round #346 (Div. 2) E F

    因为很久没有个人认真做题了 昨天晚上开了场虚拟cf来锻炼个人手速 选的是第一次做cf的场 那时候7出3还被hack...之后也没补题 这次做的时候顺便回忆了一下以前比赛的时候是怎么想的 发现经验还是很 ...

  8. lua 可变参数

    问题:对可变参数传递的时候,采用如下方案: local cellData = {MsgText = msgText,Param = ...,CallBackFunc = callBackFunc,Ca ...

  9. ajax for in eval()知识点的应用

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. LinqToXml

    简单的创建一个Xml ///创建一个Xml文档 XElement x = new XElement("qiao");//创建一个根节点 var xx = new XElement( ...