• 【原创】利用Windows系统日志统计员工每天上下班考勤时间


    利用Windows系统日志统计员工每天上下班考勤时间(命令行参数为统计月份):

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Diagnostics;
    
    namespace ConsoleSysLogView
    {
        class Program
        {
            static void Main(string[] args)
            {
                SystemLog log = new SystemLog();
                if (args.Length == 1)
                {
                    int x = Convert.ToInt32(args[0]);
                    log.PrintEventLog(x);
                }
                else
                {
                    Console.WriteLine("Event count: " + log.Count);
                    Console.WriteLine("QueryMessage: SysLogView.exe MonthNum");
                }
    
                if (Debugger.IsAttached) Console.ReadKey();
            }
        }
    
        public class SystemLog
        {
            private EventLogEntryCollection _eventCollection;
            private EventLog _systemEvent;
    
            public SystemLog()
            {
                _systemEvent = new EventLog();
                _systemEvent.Log = "System";
                _eventCollection = _systemEvent.Entries;
            }
    
            public void PrintEventLog(int month)
            {
                DateTime dateFrom = new DateTime(DateTime.Now.Year, month, 1);
                DateTime dateTo = dateFrom.AddMonths(1);
    
                DateTime dt = dateFrom;
                while (dt < dateTo)
                {
                    IList<EventLogEntry> list = Events.Where(a => a.TimeGenerated.Date == dt.Date).OrderBy(a => a.TimeGenerated).ToList();
                    if (list.Count > 0)
                    {
                        Console.WriteLine();
                        Console.WriteLine(GetLogEntryText(list[0]));
                        if (list.Count > 1)
                        {
                            int l = list.Count - 1;
                            Console.WriteLine(GetLogEntryText(list[l]));
                        }
                    }
    
                    dt = dt.AddDays(1);
                }
            }
    
            private string GetLogEntryText(EventLogEntry entry)
            {
                return string.Format("{0} {1:yyyy-MM-dd HH:mm} 来源:{2} 事件ID:{3}", entry.EntryType, entry.TimeGenerated.ToString("yyyy-MM-dd HH:mm"), entry.Source, entry.InstanceId);
            }
    
            private IList<EventLogEntry> _events;
            public IList<EventLogEntry> Events
            {
                get
                {
                    if (_events == null)
                    {
                        _events = new List<EventLogEntry>();
    
                        for (int i = 0; i < _eventCollection.Count; i++)
                        {
                            EventLogEntry entry = _eventCollection[i];
                            _events.Add(entry);
                            if (i % 1000 == 0) Console.Write(".");
                        }
                    }
    
                    return _events;
                }
            }
    
            public int Count
            {
                get { return Events.Count; }
            }
    
        }
    }
  • 相关阅读:
    20201029-1 每周例行报告
    20201022-1 每周例行报告
    20201015-3 每周例行报告
    作业要求 20201008-1 每周例行报告
    《机器学习》第二次作业——第四章学习记录和心得
    实验 7:OpenDaylight 实验——Python 中的 REST API 调用
    实验 6:OpenDaylight 实验——OpenDaylight 及 Postman 实现流表下发
    实验 5:OpenFlow 协议分析和 OpenDaylight 安装
    实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令
    实验 3:Mininet 实验——测量路径的损耗率
  • 原文地址:https://www.cnblogs.com/chriskwok/p/3449616.html
Copyright © 2020-2023  润新知