2014-02-04 1 views
0

В xamarin .ios я использую nlog, в том случае, если я создаю файл xls & сохранил сообщение о его работоспособности, но я попытался сохранить его в sqllite, не работая. Я создал таблицу под названием ErroLog, в которой созданы 4 столбца .database в папку MyDocument. Скажите, пожалуйста, под кодом ниже, что такое проблема?Как хранить сообщение nlog в sqllite? используя xamarin.ios

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); 
} 

ответ

0

Вы, скорее всего, переписываете свою базу данных каждый раз при инициализации. Попробуйте это вместо:

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