Пример #1
0
        internal static void CreateSqliteTarget(bool callFromOutside = true)
        {
            try
            {
                NLog.Config.LoggingConfiguration config = new NLog.Config.LoggingConfiguration();
                NLog.Targets.Target           dbTarget  = FindTargetByName(TARGETDATABASE);
                SqliteConnectionStringBuilder connectionStringBuilder = new SqliteConnectionStringBuilder {
                    ConnectionString = GetConnectionString()
                };
                string dbFileName = connectionStringBuilder.DataSource;
                if (!string.IsNullOrEmpty(dbFileName))
                {
                    FileInfo fileInfo = new FileInfo(dbFileName);
                    if (!fileInfo.Directory.Exists)
                    {
                        fileInfo.Directory.Create();
                    }
                    if (!File.Exists(dbFileName))
                    {
                        using (FileStream fs = File.Create(dbFileName))
                        {
                            fs.Close();
                        }

                        config.AddTarget(dbTarget);
                        using (var context = new NLog.Config.InstallationContext(Console.Out))//Console.Out
                        {
                            config.Install(context);
                        }
                    }
                    if (callFromOutside)
                    {
                        //register Logs db file
                        using (FileSystemWatcher fileWatcher = new FileSystemWatcher(fileInfo.Directory.FullName, fileInfo.Name))
                        {
                            fileWatcher.NotifyFilter          = NotifyFilters.FileName;
                            fileWatcher.EnableRaisingEvents   = true;
                            fileWatcher.IncludeSubdirectories = false;

                            fileWatcher.Renamed += (sender, e) =>
                            {
                                CreateSqliteTarget(false);
                            };
                            fileWatcher.Deleted += (sender, e) =>
                            {
                                CreateSqliteTarget(false);
                            };
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                KraftLogger.LogError(ex);
            }
        }
Пример #2
0
        protected virtual void Initialize()
        {
            if (this.IsInitialized)
                return;

            if (this.NLogger == null)
            {
                try
                {
                    string configPath = Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase), "NLog.config");

                    if (configPath.StartsWith("file:"))
                        configPath = configPath.Substring("file:".Length).TrimStart(Path.DirectorySeparatorChar);

                    NLog.Config.LoggingConfiguration config = new NLog.Config.XmlLoggingConfiguration(configPath);

                    using (var context = new NLog.Config.InstallationContext())
                    {
                        config.Install(context);
                    }

                    this.NLogger = NLog.LogManager.GetCurrentClassLogger();
                    this.NLogger.Factory.Configuration = config;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex);
                    throw;
                }
                finally
                { }
            }

            this.IsInitialized = true;
        }