Esempio n. 1
0
        public void Info(string user, string message, LogAppender logAppender, bool canNotify = false)
        {
            bool canAppendWithSQL  = logAppender == LogAppender.all || logAppender == LogAppender.sql;
            bool canAppendWithFILE = logAppender == LogAppender.all || logAppender == LogAppender.file;

            Action <ILogBase> log = x => x.Info(user, message);


            try
            {
                if (canAppendWithSQL)
                {
                    log.Invoke(LogDB.GetLog(DbConnection));
                }


                if (canAppendWithFILE)
                {
                    if (string.IsNullOrEmpty(LoggingPathFile))
                    {
                        throw new Exception("file path is empty.");
                    }

                    LogFile.GetLog(LoggingPathFile).Info(user, message);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Add a LogAppender object to the List of LogAppender objects
 /// </summary>
 /// <param name="logAppender">The LogAppender object that should be added to the List of LogAppender objects</param>
 public void AddLogAppender(LogAppender logAppender)
 {
     if (logAppender == null)
     {
         throw new ArgumentNullException(nameof(logAppender));
     }
     LogAppenders.Add(logAppender);
 }
Esempio n. 3
0
        public void Initialize()
        {
            container.RegisterInstance(coreLog = LogManager.GetLogger("CoreLog"));
            container.RegisterFrom <C>();
            container.RegisterInstance <IKernel>(this);
            container.Intercept(x => x.ServiceType == typeof(IInvocationProxy), (sf, pd) => DefineProxyType(pd));
            container.Register <DelayerInterceptor>(new PerContainerLifetime());

            if (container.GetInstance <IConfigurationProvider>().Get(CoreConfiguration.Default).LogToFile)
            {
                appender = new LogAppender(container.GetInstance <IConfigurationProvider>());
                BasicConfigurator.Configure(LogManager.GetRepository(), appender);
            }

            container.GetInstance <IProcessListStorage>().CleanList();

            coreLog.Info(new string('=', 10));
            coreLog.Debug($"Kernel initialized");
        }
        public static Log4NetLogger getInstance(LogAppender appender, string configPath)
        {
            LogBuffer.initBuffer();
            switch (appender)
            {
            case LogAppender.APP_CORE:
            {
                if (Log4NetLogger.instanceManager == null)
                {
                    Log4NetLogger.instanceManager = new Log4NetLogger(LogAppender.APP_CORE, configPath);
                }
                return(Log4NetLogger.instanceManager);
            }

            case LogAppender.APP_UI:
            {
                if (Log4NetLogger.instanceUi == null)
                {
                    Log4NetLogger.instanceUi = new Log4NetLogger(LogAppender.APP_UI, configPath);
                }
                return(Log4NetLogger.instanceUi);
            }

            case LogAppender.APP_SETTINGS:
            {
                if (Log4NetLogger.instanceSettings == null)
                {
                    Log4NetLogger.instanceSettings = new Log4NetLogger(LogAppender.APP_SETTINGS, configPath);
                }
                return(Log4NetLogger.instanceSettings);
            }

            default:     //LogAppender.APP_DEFFAULT:
            {
                if (Log4NetLogger.instanceDefault == null)
                {
                    Log4NetLogger.instanceDefault = new Log4NetLogger(LogAppender.APP_DEFFAULT, configPath);
                }
                return(Log4NetLogger.instanceDefault);
            }
            }
        }
Esempio n. 5
0
        /// <summary> Gets a logger. </summary>
        /// <param name="type">        The type. </param>
        /// <param name="logAppender"> (Optional) The <see cref="LogAppender" /> </param>
        /// <param name="className">   (Optional) The class name. </param>
        /// <returns> The logger. </returns>
        public static ILogger GetLogger(Type type, LogAppender logAppender = LogAppender.File | LogAppender.Console,
                                        string?className = null)
        {
            if (string.IsNullOrEmpty(className))
            {
                className = !type.IsGenericType
                    ? type.Name
                    : Regex.Replace(
                    type.Name, "`[0-9]+", string.Join(" ", type.GetGenericArguments().Select(v => v.Name)));
            }

            lock (s_typeLoggers)
            {
                if (!s_typeLoggers.TryGetValue(type, out Logger? logger))
                {
                    List <IAppender> appenders = new List <IAppender>();
                    if ((logAppender & LogAppender.File) == LogAppender.File)
                    {
                        appenders.Add(new FileAppender(className, LogDirectory, MaxQueueSize));
                    }
                    if ((logAppender & LogAppender.Console) == LogAppender.Console)
                    {
                        appenders.Add(new ConsoleAppender(className));
                    }
                    logger = new Logger(appenders.ToArray());
                    logger.PrepareLogging(DateTime.Now);
                    s_typeLoggers.Add(type, logger);

                    if (s_loggerCount + 1 >= s_loggers.Length)
                    {
                        Array.Resize(ref s_loggers, s_loggers.Length * 2);
                    }
                    s_loggers[s_loggerCount] = logger;
                    s_loggerCount++;
                }

                return(logger);
            }
        }
Esempio n. 6
0
 /// <summary> Gets a logger. </summary>
 /// <typeparam name="T"> Generic type parameter. </typeparam>
 /// <param name="logAppender"> (Optional) The <see cref="LogAppender" /> </param>
 /// <param name="className">   (Optional) The class name. </param>
 /// <returns> The logger. </returns>
 public static ILogger GetLogger <T>(LogAppender logAppender = LogAppender.File | LogAppender.Console,
                                     string?className        = null)
     where T : class
 {
     return(GetLogger(typeof(T), logAppender, className));
 }
 private Log4NetLogger(LogAppender appender, string configPath)
 {
     this.logAppender = appender;
     this.level       = LogConfig.getLogLevel(configPath);
 }
        public ArenaClientForm()
        {
            InitializeComponent();

            MyIniParser = new IniParser();

            string strWidth = MyIniParser.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.CLIENT_WINDOW_WIDTH, 800);
            string strHeight = MyIniParser.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.CLIENT_WINDOW_HEIGHT, 500);
            int width, height;
            if (int.TryParse(strWidth, out width))
                this.Width = width;
            if (int.TryParse(strHeight, out height))
                this.Height = height;
            LoginUserNameTextBox.Text = MyIniParser.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.CLIENT_LOGIN_NAME, string.Empty);
            //ServerAddressComboBox.Text = MyIniParser.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.CLIENT_SERVER_ADDRESS, "127.0.0.1:30000");

            string[] serverList = MyIniParser.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.CLIENT_SERVER_LIST, string.Empty).Split(',');
            foreach (string s in serverList)
            {
                if (s != string.Empty)
                {
                    ServerAddressComboBox.Items.Add(s);
                    ServerListCount++;
                }
            }

            if (ServerListCount > 0)
            {
                ServerAddressComboBox.SelectedIndex = 0;
                ServerAddressComboBox.Text = (string)ServerAddressComboBox.SelectedItem;
            }
            else
            {
                ServerAddressComboBox.Text = string.Empty;
            }

            ServerAddressComboBox.Items.Add("----------履歴----------");

            serverList = MyIniParser.GetSetting(IniConstants.SECTION_SETTINGS, IniConstants.CLIENT_SERVER_HISTORY, string.Empty).Split(',');
            foreach (string s in serverList)
            {
                if (s != string.Empty)
                {
                    if (ServerHistory.Count >= MaxServerHistory) break;

                    ServerAddressComboBox.Items.Add(s);
                    ServerHistory.Add(s);
                }
            }
            ServerHistory.Reverse();

            GoTo(OperationMode.Offline);

            ArenaSessionClient = new AsyncTcpClient(new SessionHandler(this));
            ArenaTunnelClient = new AsyncUdpClient(new TunnelHandler(this));

            //UdpPortTextBox_TextChanged(null, null);

            ResetServerStatusBar();
            RefreshLanAdapterList();

            AppendToChatTextBoxDelegate = delegate(string message, Color color, CheckBox notDisplay)
            {
                if (notDisplay != null && notDisplay.Checked) return;
                try
                {
                    ChatLogTextBox.AppendText(message);
                    ChatLogTextBox.AppendText(Environment.NewLine);
                    //ChatLogTextBox.ScrollToCaret();

                }
                catch (Exception ex)
                {
                    logTextBox.AppendText(message);
                    logTextBox.AppendText(ex.ToString());
                }
            };

            string software = String.Format("{0}  アリーナクライアント バージョン: {1}", ApplicationConstants.APP_NAME, ApplicationConstants.VERSION);
            AppendToChatTextBoxDelegate(software, Color.DarkGreen, null);
            AppendToChatTextBoxDelegate("プロトコル: " + Protocol1Constants.PROTOCOL_NUMBER, Color.DarkGreen, null);
            ThreadPool.QueueUserWorkItem(new WaitCallback(PendingLogPollingLoop));
        }
Esempio n. 9
0
        public void Error <T>(T valueObject, string user, string message, Exception exception, LogAppender logAppender, bool canNotify = false) where T : class
        {
            bool canAppendWithSQL  = logAppender == LogAppender.all || logAppender == LogAppender.sql;
            bool canAppendWithFILE = logAppender == LogAppender.all || logAppender == LogAppender.file;

            Action <ILogBase> log = x => x.Error(valueObject, user, message, exception);


            try
            {
                if (canAppendWithSQL)
                {
                    log.Invoke(LogDB.GetLog(DbConnection));
                }


                if (canAppendWithFILE)
                {
                    if (string.IsNullOrEmpty(LoggingPathFile))
                    {
                        throw new Exception("file path is empty.");
                    }

                    log.Invoke(LogFile.GetLog(LoggingPathFile));
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 10
0
        /// <summary>
        /// This method is an orchestrator for following activities
        /// 1. Start the subscription
        /// 2. List the subscription
        /// 3. Read content blob urls between start and end date
        /// 4. Read failed requests from previous batches/executions and insert activities to Lists
        /// 5. Read data from current batche and insert activities to the same list
        /// 6. Insert activities to Staging table
        /// 7. Load activities from Staging table to Main table
        /// 8. Clean up & update settings for next execution
        /// </summary>
        /// <returns></returns>
        public async Task ExtractOffice365AuditLogsAsync()
        {
            _lastAuditLogTimeStampForPowerPlatform = AuditLogTimeStampsForPowerPlatform.Item1;
            _endTimeStampForPowerPlatform          = AuditLogTimeStampsForPowerPlatform.Item2;

            try
            {
                // Start the subscription
                var startSubscriptionResponse = await _o365ActivityApiWrapper.StartSubscriptionAsync().ConfigureAwait(false);

                if (startSubscriptionResponse.IsSuccessStatusCode)
                {
                    //List the subscription
                    var listSubscriptionResponse = await _o365ActivityApiWrapper.ListSubscriptionAsync().ConfigureAwait(false);

                    if (listSubscriptionResponse.IsSuccessStatusCode)
                    {
                        //Manage date and time
                        if (string.IsNullOrWhiteSpace(_lastAuditLogTimeStampForPowerPlatform))
                        {
                            _lastAuditLogTimeStampForPowerPlatform = DateTime.UtcNow.AddHours(-24).ToString("yyyy-MM-ddTHH:mm");
                            _endTimeStampForPowerPlatform          = DateTime.ParseExact(_lastAuditLogTimeStampForPowerPlatform, "yyyy-MM-ddTHH:mm", null)
                                                                     .AddMinutes(_configuration.AppSettings.IngestionFrequencyInMinutes).ToString("yyyy-MM-ddTHH:mm");
                        }
                        else
                        {
                            _lastAuditLogTimeStampForPowerPlatform = Convert.ToDateTime(_lastAuditLogTimeStampForPowerPlatform).ToString("yyyy-MM-ddTHH:mm");
                            _endTimeStampForPowerPlatform          = Convert.ToDateTime(_endTimeStampForPowerPlatform).ToString("yyyy-MM-ddTHH:mm");
                        }

                        ValidateStartEndTime(_endTimeStampForPowerPlatform, _lastAuditLogTimeStampForPowerPlatform);

                        //Retrieve content blobs between start and end time.
                        var contentUris = await _o365ActivityApiWrapper.RetrieveBlobUrisAsync(_lastAuditLogTimeStampForPowerPlatform, _endTimeStampForPowerPlatform).ConfigureAwait(false);

                        _log.Info($"Retrived {contentUris.Count} content blobs between {_lastAuditLogTimeStampForPowerPlatform} and {_endTimeStampForPowerPlatform} time period");

                        //Read Previous failed blob url request and retry those
                        var failedRequests = await _ado.GetFailedRequestsAsync().ConfigureAwait(false);

                        List <int>      completedOldRequests       = new List <int>();
                        List <Activity> oldPowerAppActivities      = new List <Activity>();
                        List <Activity> oldPowerBIActivities       = new List <Activity>();;
                        List <Activity> oldPowerAutomateActivities = new List <Activity>();

                        if (failedRequests.Count > 0)
                        {
                            (completedOldRequests, oldPowerAppActivities, oldPowerBIActivities, oldPowerAutomateActivities) = await RetryOldRequestsAsync(failedRequests).ConfigureAwait(false);
                        }

                        //Read activities from Office 365 and load Power BI, Power App and Power Automate in memory
                        List <string>   failedBlobUrls          = new List <string>();
                        List <Activity> powerAppActivities      = new List <Activity>();
                        List <Activity> powerBIActivities       = new List <Activity>();;
                        List <Activity> powerAutomateActivities = new List <Activity>();

                        (failedBlobUrls, powerAppActivities, powerBIActivities, powerAutomateActivities) = await _o365ActivityApiWrapper.RetrieveAuditActivititesFromBlobContentAsync(contentUris).ConfigureAwait(false);

                        powerAutomateActivities.AddRange(oldPowerAutomateActivities);
                        powerAppActivities.AddRange(oldPowerAppActivities);
                        powerBIActivities.AddRange(oldPowerBIActivities);

                        oldPowerBIActivities.Clear();
                        oldPowerAppActivities.Clear();
                        oldPowerAutomateActivities.Clear();

                        LogAppender.FlushApplicationInsightsTelemetry();

                        //Bulk insert failed records
                        if (failedBlobUrls.Count > 0)
                        {
                            await InsertFailedBlobUrlsToDatabaseAsync(failedBlobUrls).ConfigureAwait(false);
                        }

                        //Truncate Staging tables
                        await _ado.TruncateStagingTablesAsync().ConfigureAwait(false);

                        //Load Audit data to staging table
                        await LoadPowerPlatformLogsToStagingTableAsync(powerAppActivities, "stg.PowerAppsAuditLog").ConfigureAwait(false);
                        await LoadPowerPlatformLogsToStagingTableAsync(powerBIActivities, "stg.PowerAutomateAuditLog").ConfigureAwait(false);
                        await LoadPowerPlatformLogsToStagingTableAsync(powerAutomateActivities, "stg.PowerBIAuditLog").ConfigureAwait(false);

                        _log.Info($"Ingested PowerPlatform logs to staging tables..");

                        //Unobserved Operations are marked in data ingestion from staging to main tables
                        //Load Audit data from staging to main tables
                        await _ado.LoadStagingDataToMainTablesAsync().ConfigureAwait(false);

                        _log.Info($"Exploded and ingested audit logs to main tables from staging area..");

                        //Delete completed old requests
                        await _ado.DeleteOldRequestsAsync(completedOldRequests).ConfigureAwait(false);

                        //Update Latesttime stamp
                        bool istimeStampUpdated = await _ado.UpdateLatestTimeStampAsync(_endTimeStampForPowerPlatform + ":00").ConfigureAwait(false);

                        _log.Info("Updated last refresh timestamp for next refresh..");

                        //Truncate Staging tables
                        await _ado.TruncateStagingTablesAsync().ConfigureAwait(false);

                        _log.Info("Cleaned staging tables..");

                        LogAppender.FlushApplicationInsightsTelemetry();
                        //Data Archival
                    }
                    else
                    {
                        var errorMessage = await listSubscriptionResponse.Content.ReadAsStringAsync().ConfigureAwait(false);

                        _log.Error($"Unable to list subscriptions to pull the audit logs. Please find the error {errorMessage}.");
                    }
                }
                else
                {
                    var errorMessage = await startSubscriptionResponse.Content.ReadAsStringAsync().ConfigureAwait(false);

                    _log.Error($"Unable to start the subscription to pull the audit logs. Please find the error {errorMessage}.");
                }
            }
            catch (AggregateException ex)
            {
                var aggregateException = ex.Flatten();
                for (int i = 0; i < aggregateException.InnerExceptions.Count; ++i)
                {
                    _log.Error($"{aggregateException.InnerExceptions[i].GetExceptionFootprints()}");
                }
                throw;
            }
            catch (Exception ex)
            {
                _log.Error($"{ex.GetExceptionFootprints()}");
                throw;
            }
            finally
            {
                LogAppender.FlushApplicationInsightsTelemetry();
            }
        }
Esempio n. 11
0
 /// <summary>
 /// Remove a LogAppender object from the List of LogAppender objects
 /// </summary>
 /// <param name="logAppender">The LogAppender object that should be removed</param>
 public void RemoveLogAppender(LogAppender logAppender)
 {
     LogAppenders.Remove(logAppender);
 }
Esempio n. 12
0
 protected virtual void LogEntry(LogEntry le)
 {
     LogAppender.Log(le);
 }