log
paketimizi içe aktarıyoruz. init()
fonksiyonunda log paketimiz ile ilgili ön ayarları yapıyoruz. Tabi biz bu işlemleri init
fonksiyonu içerisinde yapmak zorunda değiliz.init()
fonksiyonumuzun içerisini dikkatlice inceleyelim. log paketimizin üzerine ayarlamalar yapıyoruz.
SetPrefix()
fonksiyonu ile log çıktımızın satırının başında ne yazacağını belirleyebiliyoruz.
SetFlags ()
fonksiyonu ile log çıktımızın görünüşünü ayarlıyoruz. log.Ldate bize zamanını gösteriyor. log.Lmicroseconds
mikrosaniyeyi ve log.Llongfile
ise dosyanın bulunduğu dizin ile ismini ve yapılan işlem ile ilgili satırı gösteriyor.
main()
fonksiyonumuzun içerisini incelediğimizde ise;
log.Println()
fonksiyonu ile klasik log çıktılama işlemini yapıyoruz. Fonksiyonun sonundaki ln bir alt satıra geçildğini gösteriyor.
log.Fatalln()
fonksiyonu ile kritik hataları bildirir. log.Println()
fonksiyonundan farkı program 1 çıkış kodu ile biter. Bu da programın hatalı bittiği anlamına gelir. Normalde sağlıklı çalışan bir program 0 çıkış kodu ile biter. 0 çıkış kodunu Golang programlama da kullanmamıza gerek kalmaz. Fakat C gibi dillerde ana fonksiyonun sonunda return 0 ibaresini yazmak zorundayız.
log.Panicln()
fonksiyonunda ise ekrana çıktımızı verir ve aynı zamanda bunu normal panic() fonksiyonu ile yapar.KAYIT: 2019/10/10 20:29:14.107529 /home/ksc10/Desktop/deneme/main.go:13: main fonksiyonu başladı KAYIT: 2019/10/10 20:29:14.107539 /home/ksc10/Desktop/deneme/main.go:15: ölümcül hata exit status 1
log.Lshortfile
yazarak dosyamızın ismini dizin olmadan ve çıktının yapıldığı satırı bastırmasını istedik.kayit.log
adında bir dosya oluşturduk. log.SetOutput
fonksiyonu ile log dosyamızı belirttik. Artık loglarımız komut satırında gözükmek yerine belirttiğimiz dosyaya yazılacaktır.kayit.log
dosyamızda aşağıdaki gibi bir sonuç ile karşılaşacağız.KAYITIM: 2022/04/18 02:44:56 main.go:14: Bir sıkıntı yaşadık ama mühim değil :/KAYITIM: 2022/04/18 02:44:56 main.go:15: Bu sefer çok kötü birşey oldu :<
kayit.log
dosyasına yazıldı. Programı çalıştırdığınızda farketmişsinizdir, log çıktılarımız komut satırı üzerinde görüntülenmedi. Çünkü kodumuzda belirttiğimiz gibi bir dosyaya yazılması için ayarlama yaptık. Peki log çıktımızın hem belirttiğimiz dosyaya yazılmasını hem de komut satırına bastırılmasını isteseydeik ne yapmamız gerekirdir? Bir sonraki örneğimize geçelim.multiwriter
oluşturduk ve hem komut satırına hem log dosyamıza yazdırması için ayarladık.setOutput
fonksiyonunda ise multiwriter'ımızı kullandık. Bu sayede programımız çalıştığında log çıktılarımız hem komut satırında hem de kayit.log
dosyamıza yazdırılacaktır.