Was wollen wir erreichen
Wir wollen wissen wann ein Task abbricht in Qlik Sense. Das kann aktuell nur im der QMC nach geschaut werden. Es gibt aber auch andere Tool die das machen würden. Eine Lösung ein externen Scheduler verwenden oder das Tool-Kit "SOS Buttler" für Qlik Sense. Aber ich denke es ist einfacher wenn wir die log4net Funktionen verwenden könnten. Denn das wäre der Weg der auch in der Qlik Sense Help stehen und von Christoph Schwarz auf YouTube und auf Github Dokumentiert wurde.
Was muss gemacht werden
Es muss eine XML-Datei im Ordner "C:\ProgramData\Qlik\Sense\Scheduler\LocalLogConfig.xml" erstellt werden. Der Inhalt ist unter Code-Beispiel oder auf dem Github von Christoph Schwarz enthalten.
Sobald die Datei erstellt wurde und der Inhalt eingefügt wurde, muss der Qlik Sense Scheduler Service neu gestartet werden. Wenn alles richtig konfiguriert wurde, bekommen nun die Empfänger eine Mail sobald ein Task fehl schlägt.
Die Beispiele auf dem Github von Christoph Schwarz zeigen was alles noch gemacht werden könnte. Aber für komplexere Mail versende aufgaben ist ein dritt Tool zu nutzten.
Code Beispiel
<?xml version="1.0"?>
<configuration>
<appender name="MailAppender" type="log4net.Appender.SmtpAppender">
<filter type="log4net.Filter.LevelRangeFilter">
<param name="levelMin" value="WARN" />
<param name="levelMax" value="ERROR" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<evaluator type="log4net.Core.LevelEvaluator">
<param name="threshold" value="ERROR"/>
</evaluator>
<param name="to" value="Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!" />
<param name="from" value=" Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! " />
<param name="subject" value="Qlik Sense Task faild" />
<param name="smtpHost" value="smtp.office365.com" />
<param name="port" value="587" />
<param name="EnableSsl" value="true" />
<param name="Authentication" value="Basic" />
<param name="username" value="XXXXXXX" />
<param name="password" value="XXXXXXX" />
<param name="bufferSize" value="0" /> <!-- dont change -->
<param name="lossy" value="true" /> <!-- dont change -->
<param name="subject" value="Qlik Sense Intern: App reload failed" />
<layout type="log4net.Layout.PatternLayout">
<param name="conversionPattern" value="Date: %date %newline
TaskName: %property{TaskName}%newline
AppName: %property{AppName}%newline
Error Message: %message%newline%newline
%newline
Der Qlik Sense Server%newline
%newline
%newline" />
</layout>
</appender>
<!--Send mail on task failure-->
<logger name="System.Scheduler.Scheduler.Slave.Tasks.ReloadTask">
<appender-ref ref="MailAppender" />
</logger>
<logger name="System.Scheduler.Scheduler.Master.Task.TaskSession">
<appender-ref ref="MailAppender" />
</logger>
</configuration>
Nötige Anpassungen
Parameter |
Beschreibung |
to |
Hier können Mail Adressen erfasst werden, mehrere mit Komma getrennt. |
from |
Wer hat die Mail gesendet, je nach Server kann hier eine Mail Adresse erfunden werden. Beim Office 365.com muss es eine reale Adresse sein! |
port |
Je nach dem was konfiguriert wurde, hier den Port wechseln |
Authentication |
Wenn Authentication Basic ist, muss ein Username und Passwort erfasst werden. Es gibt fälle die keine Autenthication erfordern (Server wird berechtigt zum Versand), dann können die 3 Parameter Einträge gelöscht werden. |
Subject |
Der kann angepasst werden wie es gewünscht wird. |
log4net.Layout.PatternLayout |
Das ist der Inhalt der Mail (Mail-Body) |
Falls der Body (log4net.Layout.PatternLayout) nicht passt, kann dieser mit den Angaben der Website von Log4net oder Log4j angepasst werden. Etwas einfacher ist es wenn die Qlik-Community durch sucht wird oder die Qlik Sense Help durchsucht wird.
Fehlersuche mit dem Loggern von Qlik Sense
Die Fehler suche ist einfacher als gedacht, am besten wird der Logger von Scheduler erweitert, so dass dieser die Infos rausschreibt. Dazu muss die Datei "C:\Program Files\Qlik\Sense\Scheduler\Scheduler.exe.config" mit den Parametern unten erweitert werden.
Die Datei wird dann unter dem Pfad der beim Parameter «initializeData» defineirt wurde gespeichert. Die Datei «Scheduler.exe.config» wird schon ein paar einträge enthalten, die Einträge unten müssen in diese Einträge integriert werden. Sonst läuft der Service nicht. Auch hier wieder den Service neu starten und dann wird sofort in den Folder und die Datei geloggt.
Code im Config XML File
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="textWriterTraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\temp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
Ich hoffe das versenden der Mails klappt und falls nicht hilft vielleicht ja die Fehlersuche etwas weiter.
Immer daran denken, das Cofig-XML wieder zurück bauen wenn der Fehler behoben ist.