如何将nlog消息存储到sqllite中?使用xamarin.ios

如何将nlog消息存储到sqllite中?使用xamarin.ios,ios,sqlite,xamarin,nlog,Ios,Sqlite,Xamarin,Nlog,在xamarin.ios中,我使用nlog,如果我创建xls文件和存储消息,它工作正常,但我尝试将其存储到sqllite中,它不工作。我创建了名为ErroLog的表,其中创建了4列。数据库存储到MyDocument文件夹中。请在下面的代码中声明我,问题是什么 private void InitializeNLog() { var saveDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

在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);
}
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”);
//创建数据库和表以保存人员信息。
使用(var conn=new SQLite.SQLiteConnection(_pathToDatabase))
{
conn.CreateTable();
}
//此编码插入正在工作,但错误值未更新
//var errorlog=newerrorlog{Time=“${longdate}”、Level=“${Level}”、Lessage=“${message}”、Logger=“${Logger}”};
//      
//使用(var db=new SQLite.SQLiteConnection(_pathToDatabase))
// {
//插入数据库(错误日志);
// }
DatabaseTarget=新的DatabaseTarget();
target.DBProvider=“System.Data.SQLite.SQLiteConnection,System.Data.SQLite,Version=1.0.65.0,Culture=neutral,PublicKeyToken=db937bc2d44ff139”;
target.ConnectionString=“数据源=“+\u路径数据库+”;版本=3;
target.CommandText=“将值(@Time、@Level、@Lessage、@Logger)插入ErrorLog(时间、级别、Lessage、记录器)中”;
//target.CommandText=“插入ErrorLog(时间、级别、Lessage、记录器)值
target.KeepConnection=true;
Add(新数据库参数信息(“@Time”,“${longdate}”);
Add(新的DatabaseParameterInfo(“@Level”,“${Level}”);
Add(新数据库参数信息(“@Lessage”,“${message}”);
Add(新的DatabaseParameterInfo(“@Logger”,“${Logger}”);
SimpleConfigurator.ConfigureForTargetLogging(target,LogLevel.Info);
_logger=LogManager.GetCurrentClassLogger();
_logger.Info(“示例信息消息”);
//SimpleConfigurator.ConfigureForTargetLogging(
//新文件目标()
//     {
//FileName=Path.Combine(saveDir,“${shortdate}.csv”),
//布局=新CsvLayout()
//         {
//纵队=
//             {
//新的CSV列“时间”,“${longdate}”),
//新的CSV列(“级别”、“${Level}”),
//新的CSV专栏(“Lessage”,“${message}”),
//新的CSV列(“记录器”,“${Logger}”)
//             },
//         }
//     },
//LogLevel.Info);
}

每次初始化时,很可能都会覆盖数据库。请尝试以下操作:

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