27. April 2010

LOG4NET Config wird nicht geladen

Problem: Die Konfiguration von LOG4NET in der App.Config wird nicht geladen.

Lösung:

1. Prüfen, ob in AssemblyInfo.cs folgendes Attribut gesetzt ist:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]

2. Prüfen, ob die App.config folgende Einträge enthält:
<configuration>

<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>
...
<log4net>

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<header value="[Header]" />
<footer value="[Footer]" />
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>

<root>
<level value="ERROR" />
<appender-ref ref="ConsoleAppender" />
</root>

</log4net>
...
</configuration>

3. Ist die Assembly (mit der LOG4NET-Konfiguration in der app.config) eine DLL, die z.B. über NUnit ausgeführt wird und andere DLLs referenziert, die LOG4NET verwenden, muss die DLL explizit eine LOG4NET-Klasse laden, auch wenn sie selbst kein Logging verwenden möchte. Sonst wird die Konfiguration nicht geladen!
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

Um möglichen Problemen auf den Grund zu gehen, kann das LOG4NET-interne Logging eingeschaltet werden in der app.config:
<appsettings>
<add key="log4net.Internal.Debug" value="true"></add>
</appsettings>

Wird die Konfiguration erfolgreich geladen, so muss folgender Log-Output generiert werden:
...
log4net: XmlConfigurator: configuring repository [log4net-default-repository] using file [C:\projects\Testing\ReportingTestProject\bin\Debug\ReportingTestProject.dll.config]
...

9. April 2010

PowerShell 2.0 Notizen

  • PowerShell 2.0 wird mit Windows 7 ausgeliefert, für andere Betriebssyteme kann man das Windows Management Framework installieren, das PowerShell 2.0 enthält.
  • Ab 2.0 gibt´s eine IDE: Windows PowerShell ISE



















Wichtige Befehle:
  • Get-Help (help): Hilfe zu einem CommandLet, z.B.
    help dir
    Hilfe zu einem Befehl oder
    help *
    Hilfeübersicht über eine Menge von Befehlen (definiert über einen Filter)
  • Get-Children (dir): Erweitertes "Dir"
  • Format-List (fl): Formattiert Ausgabe als Liste (alle Items untereinander als Key/Value-Paare), z.B.
    dir | fl
    für die Default Attribute

    oder
    dir | fl *
    für alle verfügbaren Attributen (der Stern * eignet sich auch zur Ermittlung welche Attribute ein CommandLet hat)
  • Format-Table (ft): Formattiert Ausgabe als Tabelle (z.B:
    dir | ft Name,Length
    mit zwei bestimmten Attributen
  • Sort-Object (sort): Sortiert Objekte, z.B.
     dir | sort LastWriteTime

  • Signieren: Infos, wie PowerShell-Scripts signiert werden können gibt es hier.

  • Sollte beim Signieren ein "UnknownError" kommen liegt das daran, dass das .PS1-File mit der Powershell ISE erzeugt wurde. Diese speichert per default als "Unicode big endian". Einfach die Datei in UTF-8 speichern, dann funktioniert das Signieren mit Set-AuthenticodeSignature.