Java týden Body zdarma
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!

Diskuze: NLog logování do db

Aktivity (4)
Avatar
Luboš Hnědý:28. srpna 21:24

Zdravím, obracím se na vás s jednou prosbou. Dělám v .net core 3.0 MVC a implementuji NLog. Všechno mi funguje jak má až na jednu věc. Za boha mi to nechce logovat DB a opravdu nevím co s tím... Googlil jsem fakt dost a stejně jsem nenašel řešení... Nevíte prosím někdo co s tím? Fakt budu strašlivě vděčnej předem moc díky za každou radu.

Takhle mam nlog.config

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true">
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions>
  <targets>
    <target xsi:type="File" name="all" fileName="${currentdir:cached=true}\App_Data\Log_${shortdate}.log"
            layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />

    <target xsi:type="File" name="errors" fileName="${currentdir:cached=true}\App_Data\ErrorLog_${shortdate}.log"
            layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />

    <target xsi:type="Database" name="db">
      <commandText>INSERT INTO [LogEntries](TimeStamp, Message, Level, Logger) VALUES(getutcdate(), @msg, @level, @logger)</commandText>
      <parameter name="@msg" layout="${message}" />
      <parameter name="@level" layout="${level}" />
      <parameter name="@logger" layout="${logger}" />
    <connectionString>Server=.\\SQLEXPRESS;Database=Test;Trusted_Connection=True;MultipleActiveResultSets=true</connectionString>
    </target>

    <target xsi:type="Null" name="blackhole" />
  </targets>
  <rules>
    <logger name="*" minlevel="Trace" writeTo="all" />
    <logger name="*" minlevel="Error" writeTo="errors" />
    <!--Skip Microsoft logs and so log only own logs-->
    <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
  </rules>
</nlog>

Takhe Startup:

var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
....

Žádnou chybu to nehodí nic. Logování se propíše do konzole, souboru, ale prostě ne do databáze... Fakt moc předem děkuju

Zkusil jsem: Hledal jsem na googlu zkoušel přidávat reference a nic jsem nenašel.

Chci docílit: Správného nastavení NLogu

 
Odpovědět 28. srpna 21:24
Avatar
Odpovídá na Luboš Hnědý
don.jarducius:28. srpna 22:39

Jsi si jistý, že v connection stringu mají být 2 lomítka u serveru? Zkoušel jsi to i s 1 lomítkem?

Nahoru Odpovědět  +1 28. srpna 22:39
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Odpovídá na Luboš Hnědý
don.jarducius:28. srpna 22:40

A nechybí ti ještě náhodou pravidlo v rules?

<logger name="*" minlevel="Error" writeTo="db" />
Nahoru Odpovědět 28. srpna 22:40
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Odpovídá na don.jarducius
Luboš Hnědý:29. srpna 6:18

Takhle to mám ve svém programu a funguje mi. To rules ještě zkusím. Vím, že tam má být jenom jak si to furt přepisuju atd., tak jsem ho tam nedal. Ale ještě to radši zkusím a uvidím, ozvu se díky moc.

 
Nahoru Odpovědět 29. srpna 6:18
Avatar
zelvicek
Člen
Avatar
Odpovídá na Luboš Hnědý
zelvicek:29. srpna 7:32

1)Nemáš v connection stringu problém s userem?
2)Pomocí nástroje MS SQL Profiler bych si zjistil, zda se connection pro ten nlog vůbec vytvoří/připojí a zda se aplikace snaží logovací příkaz/command vykonat.
3)Udělej si malou konzolovou aplikaci, ve které si sám vytvoříš připojení (pomocí SqlConnection) and zkusíš provést ten command.

 
Nahoru Odpovědět  +1 29. srpna 7:32
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na zelvicek
Luboš Hnědý:29. srpna 15:00

don.jarducius - Do rules jsem přidal nepomhlo

  1. Nemělo by to mít vliv.
  2. Nevytvoří - Zkoušel jsem to pomocí Profileru, za to díky to mě vůběc nenapadlo.
  3. Udělal jsem viz příklad.
SqlConnection cnn;
var connetionString = "Server=.\\SQLEXPRESS;Database=Test;Trusted_Connection=True;MultipleActiveResultSets=true";
cnn = new SqlConnection(connetionString);
try
{
    cnn.Open();
    var command = new SqlCommand("INSERT INTO [LogEntries](TimeStamp, Message, Level, Logger) VALUES(getutcdate(), 'asd', 5, 'xx')", cnn);
    command.ExecuteNonQuery();
    cnn.Close();
}
catch (Exception ex)
{
    ;
}

Je to ve stejném programu, kde je nastavený nlog. A normálně to funguje. Propíše se to v pohodě do DB. Fakt už nevím co s tím...

 
Nahoru Odpovědět 29. srpna 15:00
Avatar
Odpovídá na Luboš Hnědý
don.jarducius:29. srpna 15:26

Tak v tom případě to jsou opravu ty 2 lomítka, protože v XML se lomítko neescapuje.
Kdežto při zápisu v kódu C# se escapuje... pokud před stringem není @ (zavináč)

// toto
var connetionString = "Server=.\\SQLEXPRESS;Database=Test;Trusted_Connection=True;MultipleActiveResultSets=true";
// je stejné jako toto
var connetionString = @"Server=.\SQLEXPRESS;Database=Test;Trusted_Connection=True;MultipleActiveResultSets=true";
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 29. srpna 15:26
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Odpovídá na don.jarducius
Luboš Hnědý:29. srpna 15:30

To jsem zkoušel a taky to nefungovalo a teď jsem to zkusil ještě jednou a už to de... Nechápu, tak jsem tam musel asi mezitím něco přidat. Díky bohu... Strašně moc děkuju za váš čas.

 
Nahoru Odpovědět 29. srpna 15:30
Avatar
Odpovídá na Luboš Hnědý
don.jarducius:29. srpna 15:32

Nejspíš ti tam chybělo i to pravidlo...

Nahoru Odpovědět 29. srpna 15:32
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.