【问题标题】:How to store nlog message into sqllite? using xamarin.ios如何将nlog消息存储到sqlite中?使用 xamarin.ios
【发布时间】:2014-02-28 10:27:39
【问题描述】:

在 xamarin .ios 中,我使用的是 nlog,如果我创建 xls 文件并存储消息,它工作正常,但我尝试将其存储到 sqllite 中,它不起作用。我创建了名为 ErroLog 的表,其中创建了 4 列。数据库存储进入 MyDocument 文件夹。你能在下面的代码中断言我吗,有什么问题?

private void InitializeNLog()
{
    var saveDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

    var documents = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
    _pathToDatabase = Path.Combine(saveDir, "db_sqlite-net.db");

    // Create the database and a table to hold Person information.
    using (var conn= new SQLite.SQLiteConnection(_pathToDatabase))
    {
        conn.CreateTable<ErrorLog>();
    }

    // this coding insert is working but error value not updated
    // var errorlog = new ErrorLog { Time = "${longdate}", Level = "${level}", Lessage ="${message}", Logger = "${logger}" };
    //      
    // using (var db = new SQLite.SQLiteConnection(_pathToDatabase ))
    // {
    //     db.Insert(errorlog);
    // }

    DatabaseTarget target = new DatabaseTarget();

    target.DBProvider = "System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139";
    target.ConnectionString = "Data Source="+_pathToDatabase+";Version=3;";
    target.CommandText = "insert into ErrorLog( Time,Level,Lessage,Logger) values(@Time,@Level,@Lessage,@Logger)";
    // target.CommandText = "insert into ErrorLog( Time,Level,Lessage,Logger) values

    target.KeepConnection = true;

    target.Parameters.Add(new DatabaseParameterInfo("@Time","${longdate}"));
    target.Parameters.Add(new DatabaseParameterInfo("@Level","${level}"));
    target.Parameters.Add(new DatabaseParameterInfo("@Lessage","${message}"));
    target.Parameters.Add(new DatabaseParameterInfo("@Logger","${logger}"));

    SimpleConfigurator.ConfigureForTargetLogging(target, LogLevel.Info);

    _logger = LogManager.GetCurrentClassLogger ();
    _logger.Info ("Sample informational message");

    // SimpleConfigurator.ConfigureForTargetLogging(
    //     new FileTarget()
    //     {
    //         FileName = Path.Combine(saveDir,"${shortdate}.csv"),
    //         Layout = new CsvLayout()
    //         {
    //             Columns =
    //             {
    //                 new CsvColumn"Time", "${longdate}"),
    //                 new CsvColumn("Level", "${level}"),
    //                 new CsvColumn("Lessage", "${message}"),
    //                 new CsvColumn("Logger", "${logger}")
    //             },
    //         }
    //     },
    //     LogLevel.Info);
}

【问题讨论】:

    标签: ios sqlite xamarin nlog


    【解决方案1】:

    您很可能在每次初始化时都会覆盖您的数据库。试试这个:

    if (!File.Exists(_pathToDatabase)) {
      using (var conn= new SQLite.SQLiteConnection(_pathToDatabase)) {
        conn.CreateTable<ErrorLog>();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-21
      • 2019-03-02
      • 2012-05-22
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 2015-11-01
      相关资源
      最近更新 更多