Category Archives: Enterprise Library

Getting the Rolling Log File Setting from your app.config

I couldn’t find an easy way to retrieve the log file location setting from the rolling log file settings in my Logging Application Block settings and after writing a query at a few places, decided that I would have to do it by reading the XML and parsing through to the log setting.

It was not too difficult, but I figured I would post it here so I could remember what I did and for others to find…

Here is a simple form that finds and lists the rolling log file name (you must put a copy of your config file into the bin\debug folder and name it “configData.xml” where this little program runs in order for it to find it):

using System;
using System.Windows.Forms;
using System.Xml.XPath;

namespace GetTheRollingLogFiles
{
 /// <summary>
 /// Summary description for Form1.
 /// </summary>
 public class Form1 : System.Windows.Forms.Form
 {
 private System.Windows.Forms.Button button1;
 private System.Windows.Forms.ListBox listBox1;
 /// <summary>
 /// Required designer variable.
 /// </summary>
 private System.ComponentModel.Container components = null;

 public Form1()
 {
 // Required for Windows Form Designer support
 InitializeComponent();
 // TODO: Add any constructor code after InitializeComponent call
 }

 /// <summary>
 /// Clean up any resources being used.
 /// </summary>
 protected override void Dispose( bool disposing )
 {
 if( disposing )
 {
 if (components != null)
 {
 components.Dispose();
 }
 }
 base.Dispose( disposing );
 }

 #region Windows Form Designer generated code
 /// <summary>
 /// Required method for Designer support - do not modify
 /// the contents of this method with the code editor.
 /// </summary>
 private void InitializeComponent()
 {
 this.button1 = new System.Windows.Forms.Button();
 this.listBox1 = new System.Windows.Forms.ListBox();
 this.SuspendLayout();
 //
 // button1
 //
 this.button1.Location = new System.Drawing.Point(12, 12);
 this.button1.Name = "button1";
 this.button1.Size = new System.Drawing.Size(152, 24);
 this.button1.TabIndex = 0;
 this.button1.Text = "GO!";
 this.button1.Click += new System.EventHandler(this.button1_Click);
 //
 // listBox1
 //
 this.listBox1.Location = new System.Drawing.Point(12, 42);
 this.listBox1.Name = "listBox1";
 this.listBox1.Size = new System.Drawing.Size(428, 433);
 this.listBox1.TabIndex = 1;
 //
 // Form1
 //
 this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
 this.ClientSize = new System.Drawing.Size(455, 502);
 this.Controls.Add(this.listBox1);
 this.Controls.Add(this.button1);
 this.Name = "Form1";
 this.Text = "Form1";
 this.Load += new System.EventHandler(this.Form1_Load);
 this.ResumeLayout(false);

 }
 #endregion

 /// <summary>
 /// The main entry point for the application.
 /// </summary>
 [STAThread]
 static void Main()
 {
 Application.Run(new Form1());
 }

 private void button1_Click(object sender, System.EventArgs e)
 {
 listBox1.Items.Clear();

 string fileName = "configData.xml";
 XPathDocument doc = new XPathDocument(fileName);
 XPathNavigator nav = doc.CreateNavigator();

 // Compile a standard XPath expression
 XPathExpression expr;
 expr = nav.Compile("/configuration/loggingConfiguration/listeners/*");
 XPathNodeIterator iterator = nav.Select(expr);

 // Iterate on the node set
 listBox1.Items.Clear();
 try
 {
 while (iterator.MoveNext())
 {
 XPathNavigator nav2 = iterator.Current.Clone();
 string rollingLogFileName = "";
 listBox1.Items.Add(nav2.Name);
 listBox1.Items.Add("HasAttributes: " + nav2.HasAttributes.ToString());
 if (nav2.MoveToFirstAttribute())
 {
 bool isRollingLogConfig = false;
 string fileNameHolder = "";
 while (true)
 {
 listBox1.Items.Add(nav2.Name + ": " + nav2.Value);
 if ((nav2.Name.ToLower() == "type") && nav2.Value.Contains("RollingFlatFileTraceListener"))
 isRollingLogConfig = true;

 if (nav2.Name == "fileName")
 fileNameHolder = nav2.Value;

 if (!nav2.MoveToNextAttribute()) break;
 }
 if (isRollingLogConfig)
 {
 rollingLogFileName = fileNameHolder;
 listBox1.Items.Add("Rolling Log file is: " + rollingLogFileName);
 }
 }
 }
 }
 catch(Exception ex)
 {
 MessageBox.Show(ex.Message);
 }
 }

 private void Form1_Load(object sender, System.EventArgs e)
 {
 }
 }
}
Advertisements