Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Luboš Hnědý:28.8.2019 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.8.2019 21:24
Avatar
Odpovídá na Luboš Hnědý
don.jarducius:28.8.2019 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
28.8.2019 22:39
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Odpovídá na Luboš Hnědý
don.jarducius:28.8.2019 22:40

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

<logger name="*" minlevel="Error" writeTo="db" />
Nahoru Odpovědět
28.8.2019 22:40
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Odpovídá na don.jarducius
Luboš Hnědý:29.8.2019 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.8.2019 6:18
Avatar
zelvicek
Člen
Avatar
Odpovídá na Luboš Hnědý
zelvicek:29.8.2019 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
29.8.2019 7:32
Avatar
Odpovídá na zelvicek
Luboš Hnědý:29.8.2019 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.8.2019 15:00
Avatar
Odpovídá na Luboš Hnědý
don.jarducius:29.8.2019 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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
29.8.2019 15:26
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Odpovídá na don.jarducius
Luboš Hnědý:29.8.2019 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.8.2019 15:30
Avatar
Odpovídá na Luboš Hnědý
don.jarducius:29.8.2019 15:32

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

Nahoru Odpovědět
29.8.2019 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.