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);