示例#1
0
        /// <summary>
        /// Start a new Kiroku logging instance, log file.
        /// </summary>
        public static void Open()
        {
            string appName = Assembly.GetCallingAssembly().GetName().Name.ToUpper();

            Guid instanceId = Guid.NewGuid();

            AppConfiguration appConfig = KConfiguration.GetConfig(appName);

            if (appConfig.Dynamic)
            {
                throw new Exception($"Dynamic logging is set to true. This is a static only method.");
            }

            KConfiguration.AddStaticInstaneId(instanceId, appName);

            using (LogInstance logInstance = new LogInstance(KConstants.s_InstanceStart, instanceId, appConfig))
            {
                if (appConfig.WriteLog)
                {
                    LogFileWriter.AddInstanceEvent(logInstance);
                }

                if (appConfig.WriteVerbose)
                {
                    //LogVerboseWriter.Write();
                }
            }
        }
示例#2
0
        /// <summary>
        /// Log constructor, boot strapping dynamic klog block id and block name -- nested inside primary node's instance id.
        /// </summary>
        /// <param name="blockName"></param>
        /// <param name="klog"></param>
        public KLog(string blockName, KLog klog)
        {
            blockID        = Guid.NewGuid();
            this.blockName = blockName;

            string appName = Assembly.GetCallingAssembly().GetName().Name.ToUpper();

            config = KConfiguration.GetConfig(appName);

            if (!config.Dynamic)
            {
                throw new Exception($"Linked KLog's only supported in Dynamic logging mode.");
            }
            else
            {
                instanceId = klog.instanceId;
            }

            Start();
        }
示例#3
0
        /// <summary>
        /// Set Global KLOG cofig and evaluate KLOG dynamic mode.
        /// </summary>
        /// <param name="config"></param>
        /// <param name="dynamic"></param>
        public static void Configure(List <KeyValuePair <string, string> > config, bool dynamic = false)
        {
            try
            {
                string appName = Assembly.GetCallingAssembly().GetName().Name.ToUpper();

                AppConfiguration appConfig = new AppConfiguration(config, GetKirokuVersion());

                if (dynamic)
                {
                    appConfig.Dynamic = true;
                }

                KConfiguration.AddOrUpdateConfig(appConfig, appName);
            }
            catch (Exception ex)
            {
                //TODO: Replace => Log.Error($"[KManager].[Configure] - Exception: {ex.ToString()}");
            }
        }
示例#4
0
        /// <summary>
        /// Boot strapping block id and block name -- create instance if dynamically logging.
        /// </summary>
        /// <param name="blockName">The friendly block name</param>
        public KLog(string blockName)
        {
            blockID        = Guid.NewGuid();
            this.blockName = blockName;

            string appName = Assembly.GetCallingAssembly().GetName().Name.ToUpper();

            config = KConfiguration.GetConfig(appName);

            if (config.Dynamic)
            {
                instanceId = KManager.CreateDynamicInstance(config);
                entryNode  = true;
            }
            else
            {
                instanceId = KConfiguration.GetStaticInstanceId(appName);
            }

            Start();
        }
示例#5
0
        /// <summary>
        /// Close the current Kiroku logging instance, marking the file for agent transmission.
        /// </summary>
        public static void Close()
        {
            string appName = Assembly.GetCallingAssembly().GetName().Name.ToUpper();

            AppConfiguration appConfig = KConfiguration.GetConfig(appName);

            if (appConfig.Dynamic)
            {
                throw new Exception($"Dynamic logging is set to true. This is a static only method.");
            }

            Guid instanceId = KConfiguration.GetStaticInstanceId(appName);

            using (LogInstance logInstance = new LogInstance(KConstants.s_InstanceStop, instanceId, appConfig))
            {
                if (appConfig.WriteLog)
                {
                    LogFileWriter.AddInstanceEvent(logInstance);

                    try
                    {
                        string newFilePath = appConfig.FullFilePath.Replace(KConstants.s_WritingToLog, KConstants.s_ReadyToSend);

                        // Rename from KLOG_W_$(guid) to KLOG_S_$(guid) -- this will maket the log available for transmission
                        File.Move(appConfig.FullFilePath + instanceId.ToString() + KConstants.s_FileExt,
                                  (newFilePath + instanceId.ToString() + KConstants.s_FileExt));
                    }
                    catch (Exception ex)
                    {
                        // TODO: Replace => Log.Error($"[KManager].[EndInstance] - Exception: {ex.ToString()}");
                    }
                }

                if (appConfig.WriteVerbose)
                {
                    //LogVerboseWriter.Write();
                }
            }
        }