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. (转)C#特性学习与使用(为枚举定义Description)

    参考:http://blog.csdn.net/nndtdx/article/details/6905802#comments

  2. 【8.0、9.0c】树形列表 列标题 不对齐的问题及解决方案

    树形视图状态经常会碰到字体上下排列不整齐的问题,虽不是什么大问题,但对某些处女座的人来说,真的是如鲠在喉,今天我们就来解决这个问题: 首先呢,这个问题的起因,不是前端css的问题,也不是js的问题,而 ...

  3. oracle中删除表中某字段出现重复的信息 保留其中一条

    记得以前有个同事问过我这个,说是以前面试的时候碰到的问题,下面我介绍三种方法. 首先我们在这里创建一个测试表添加相应的测试数据. create table test  (id number,name ...

  4. Scala命令设置JVM参数的规则

    Scala下设置JVM参数简单分析 Scala 启动shell脚本,简化后的scala REPL 启动命令大致如下所示: java -Xmx256M -Xms32M \-Xbootclasspath/ ...

  5. Js中this用法及注意点详解

          我们在写js时,特别是用到回调函数时,经常会发现this指代的对象总是可能脱离自己的思路而发生改变.面向对象语言的特性告诉我们this始终指代它的调用者,而在js中回调函数中内部的this ...

  6. C# 安装和卸载 Windows Service

    特别注意: 安装Window Service 的时候,一定要用管理员打开命令提示符(cmd) 1. 创建Windows Service 服务项目 2. Service设计界面:右键-->选择安装 ...

  7. [读书]10g/11g编程艺术深入体现结构学习笔记(持续更新...)

    持续更新...) 第8章 1.在过程性循环中提交更新容易产生ora-01555:snapshot too old错误.P257 (这种情况我觉得应该是在高并发的情况下才会产生) 假设的一个场景是系统一 ...

  8. SQL Server如何添加登录名

    1.电脑上如果安装有SQL Server,我们在开始里面打开SQL Server Management Studio,或者以桌面的快捷方式等打开SQL Server. 2.首先以Windows身份验证 ...

  9. SpringMVC下的Shiro权限框架的使用

    SpringMVC+Shiro权限管理 博文目录 权限的简单描述 实例表结构及内容及POJO Shiro-pom.xml Shiro-web.xml Shiro-MyShiro-权限认证,登录认证层 ...

  10. php 的包管理工具 composer

    官方网站 https://getcomposer.org/ 下载地址 https://getcomposer.org/download/ 安装教程 https://laravist.com/serie ...