Standardized Logging Interface for PowerShell Scripts and CmdLet’s

A few weeks ago, my colleagues had a spotlight on the common .NET logging library NLog ( This specific class library, provides a lot of functions, methods and classes, to perform logging actions in .NET applications, assemblies, etc. in a very professional way. You can decide what you log, where you log (file, database, mail, console, etc…), how much you log, how the log data looks like and when the logs can be recycled, or archived.

Sound’s perfect to me i thought, and for me as an IT professional, it provides me all the features i require for logging, and i don’t need to write my own logging engine.

PowerShell becomes more and more important, even if you have a script, that runs well and you need to find out what’s broken, if you touched the script, a long time ago. Therefor, i thought it would be a cool thing, to have a kind of a “Logging Interface” for my PS-Scripts. Primary, my major goal was, to better understand how .NET-Objects and a scripting engine can interact together.

Important benefits

  1. Common logging functionality for all your PowerShell scripts
  2. Reusable code
  3. Easy to implement for the future

So let’s go ahead and start with the implementation of the LogInterface into your scripts. All you have to do, is, to include the LogInterface.ps1 script into your scripts. In PowerShell it looks like you see it below.

To get the logger work properly and use it, you have to perform the steps

2 thoughts on “Standardized Logging Interface for PowerShell Scripts and CmdLet’s

Add yours

  1. Hello,

    great article. How can i use the LayoutwithHeaderAndFooter for the filetarget for the logging.

    1. Hello Matthias,
      why do you need a header and footer. NLog creates a rolling logfile. So you don’t have a header and foother there


Leave a Reply

Your email address will not be published. Required fields are marked *

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑

%d bloggers like this: