跳到主要内容

github/tai

公开

Tai · Windows 软件与网站使用时长统计。上游 Planshit/Tai 的源码镜像,非灵栈原创;MIT 许可。来源:https://github.com/Planshit/Tai 。本次为手动同步,暂不提供安装包。

提交记录
修改Core/Librarys/Logger.cs+102 −10看文件
@@ -4,16 +4,41 @@ using System.Collections.Generic;
44using System.Diagnostics;
55using System.IO;
66using System.Linq;
7新增:using System.Management;
8新增:using System.Reflection;
79using System.Runtime.CompilerServices;
810using System.Text;
911using System.Threading.Tasks;
12新增:using System.Windows.Forms;
13新增:using System.Windows.Threading;
1014
1115namespace Core.Librarys
1216{
13删除: public class Logger
17新增: public static class Logger
1418 {
19新增: private static readonly int threshold = 50;
20新增:
1521 private static readonly object writeLock = new object();
1622
23新增: private static List<string> loggers = new List<string>();
24新增:
25新增:
26新增: static Logger()
27新增: {
28新增: // 创建计时器,定时保存log
29新增:
30新增: DispatcherTimer dispatcherTimer = new DispatcherTimer();
31新增: dispatcherTimer.Interval = new TimeSpan(0, 5, 0);
32新增: dispatcherTimer.Tick += DispatcherTimer_Tick;
33新增: dispatcherTimer.Start();
34新增:
35新增: }
36新增:
37新增: private static void DispatcherTimer_Tick(object sender, EventArgs e)
38新增: {
39新增: Save(true);
40新增: }
41新增:
1742 private enum LogLevel
1843 {
1944 Info,
@@ -23,31 +48,46 @@ namespace Core.Librarys
2348
2449 public static void Info(string message, [CallerLineNumber] int callerLineNumber = -1, [CallerFilePath] string callerFilePath = null, [CallerMemberName] string callerMemberName = null)
2550 {
26删除: message = message + "\r\n[Caller Info] Line:" + callerLineNumber + ",File:" + callerFilePath + ",name:" + callerMemberName;
27删除: Save(Fromat(LogLevel.Info, message));
51新增: message = message + "\r\n[ Caller Info ] Line:" + callerLineNumber + ",File:" + callerFilePath + ",name:" + callerMemberName;
52新增: message = Fromat(LogLevel.Info, message);
53新增:
54新增: loggers.Add(message);
2855 }
2956
3057 public static void Warn(string message, [CallerLineNumber] int callerLineNumber = -1, [CallerFilePath] string callerFilePath = null, [CallerMemberName] string callerMemberName = null)
3158 {
32删除: message = message + "\r\n[Caller Info] Line:" + callerLineNumber + ",File:" + callerFilePath + ",name:" + callerMemberName;
33删除: Save(Fromat(LogLevel.Warn, message));
59新增: message = message + "\r\n[ Caller Info ] Line:" + callerLineNumber + ",File:" + callerFilePath + ",name:" + callerMemberName;
60新增: message = Fromat(LogLevel.Warn, message);
61新增:
62新增: loggers.Add(message);
3463 }
3564 public static void Error(string message, [CallerLineNumber] int callerLineNumber = -1, [CallerFilePath] string callerFilePath = null, [CallerMemberName] string callerMemberName = null)
3665 {
37删除: message = message + "\r\n[Caller Info] Line:" + callerLineNumber + ",File:" + callerFilePath + ",name:" + callerMemberName;
38删除: Save(Fromat(LogLevel.Error, message));
66新增: message = message + "\r\n[ Caller Info ] Line:" + callerLineNumber + ",File:" + callerFilePath + ",name:" + callerMemberName;
67新增: message = Fromat(LogLevel.Error, message);
68新增:
69新增: loggers.Add(message);
3970 }
4071
4172 private static string Fromat(LogLevel logLevel, string message)
4273 {
4374 message = HandleMessage(message);
44删除: string logText = $"[{logLevel.ToString()}] [{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}] \r\n{message}\r\n------------------------\r\n\r\n";
75新增: string logText = $"[ {logLevel.ToString()} ] [ {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} ] \r\n{message}\r\n------------------------\r\n\r\n";
4576 Debug.WriteLine(logText);
4677 return logText;
4778 }
4879
49删除: private static void Save(string message)
80新增: /// <summary>
81新增: /// 将log写入文件
82新增: /// </summary>
83新增: /// <param name="isNow">是否强制立即写入</param>
84新增: public static void Save(bool isNow = false)
5085 {
86新增: if ((!isNow && loggers.Count < threshold) || loggers.Count == 0)
87新增: {
88新增: return;
89新增: }
90新增:
5191 string loggerName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
5292 "Log", DateTime.Now.ToString("yyyy-MM-dd") + ".log");
5393 lock (writeLock)
@@ -57,8 +97,60 @@ namespace Core.Librarys
5797 {
5898 Directory.CreateDirectory(dir);
5999 }
60删除: File.AppendAllText(loggerName, message);
100新增:
101新增: if (!File.Exists(loggerName))
102新增: {
103新增: List<string> clientInfo = new List<string>();
104新增:
105新增: // 记录客户端信息
106新增:
107新增:
108新增: // tai版本号
109新增: clientInfo.Add(FromatItem("Tai Version", Assembly.GetExecutingAssembly().GetName().Version.ToString()));
110新增: clientInfo.Add(FromatItem("WindowsOS Name", GetWindowsVersionName()));
111新增: clientInfo.Add(FromatItem("Screen Size", GetScreenSize()));
112新增: clientInfo.Add("\r\n++++++++++++++++++++++++++++++++++++++++++++++++++\r\n\r\n");
113新增:
114新增: File.WriteAllText(loggerName, string.Join("\r\n", clientInfo.ToArray()));
115新增: }
116新增:
117新增:
118新增: File.AppendAllText(loggerName, string.Join("", loggers.ToArray()));
119新增: }
120新增: }
121新增:
122新增:
123新增: private static string GetScreenSize()
124新增: {
125新增: return SystemInformation.VirtualScreen.Width + " × " + SystemInformation.VirtualScreen.Height;
126新增: }
127新增: private static string GetWindowsVersionName()
128新增: {
129新增: string name = string.Empty;
130新增: try
131新增: {
132新增: ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
133新增: foreach (ManagementObject obj in managementObjectSearcher.Get())
134新增: {
135新增: name = obj["Name"].ToString();
136新增: }
137新增:
138新增: if (!string.IsNullOrEmpty(name) && name.IndexOf("|") != -1)
139新增: {
140新增: name = name.Split('|')[0];
141新增: }
61142 }
143新增: catch
144新增: {
145新增: return "[无法获取系统版本]";
146新增: }
147新增:
148新增: return name;
149新增: }
150新增:
151新增: private static string FromatItem(string name, string text)
152新增: {
153新增: return $"[ {name} ] {text};\r\n";
62154 }
63155
64156 private static string HandleMessage(string message)