Home Contact RSS

Archive for July, 2007

“ini” Dosyasından Bilgi Okumak

Her ne kadar .NET uygulamalarınızda kullanabileceÄŸiniz “config” uzantılı dosyalar her türlü ihtiyacınızı karşılayabilecek kapasitede olsa da, bazı durumlarda uygulamanızın aÅŸağıdaki gibi bir “ini” dosyasını okuması gerekebilir.

[DATABASE]
DSN=(local)
UserID=sa
Password=123456
Catalog=Northwind

Bu “ini” dosyasının “C” dizini içerisinde “settings.ini” olarak kayıtlı olduÄŸunu düşünürsek, aÅŸağıdaki kodu kullanarak deÄŸerlere eriÅŸebilirsiniz.

using System;
using System.Runtime.InteropServices;
using System.Text;

public static class IniReader
{
    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(string section, string key, string def,
                                                       StringBuilder retVal, int size, string filePath);

    public static string Read(string section, string key)
    {
        StringBuilder sb = new StringBuilder(255);
        GetPrivateProfileString(section, key, string.Empty, sb, 255, @"C:\settings.ini");
        return sb.ToString();
    }
}

Kullanımı ise şu şekilde:

string dsn = IniReader.Read("DATABASE", "DSN");

Windows EventLog’a Kayıt Eklemek

Loglamanın yazılım geliÅŸtiriciler için ne kadar önemli bir konu olduÄŸunu hepimiz biliyoruz. Dikkatli yazmadığımız tüm kodların birgün tekrar karşımıza çıkacağı konusunda da hemfikiriz. O halde en azından elimizde çözüme ulaÅŸmamızı saÄŸlayacak bilgi olsun diyorsanız ve loglama iÅŸlemlerini Windows’un Event Log’unu kullanarak yapmak istiyorsanız aÅŸağıdaki koda ihtiyacınız olacaktır.

Unutmadan ekleyeyim, bu işlemi bir ASP.NET uygulaması ile yaparsanız sadece yazma işlemi yapabilir, güvenlik gereği okuma ve listeleme işlemi yapamazsınız. Dolayısı ile sunucunun yönetimi elinizde değilse, eklediğiniz kayıtlar çok da işinize yaramaz.

string eventLogSource = "MyEventLog";
string eventLogName = "My Event Log";

if (!System.Diagnostics.EventLog.SourceExists(eventLogSource))
    System.Diagnostics.EventLog.CreateEventSource(eventLogSource, eventLogName);

m_EventLog = new System.Diagnostics.EventLog(eventLogName);
m_EventLog.ModifyOverflowPolicy(System.Diagnostics.OverflowAction.OverwriteAsNeeded, m_EventLog.MinimumRetentionDays);
m_EventLog.Source = "My Application Name";

m_EventLog.WriteEntry("Something happened.", System.Diagnostics.EventLogEntryType.Information);