Android uygulamalarda loglama pratikleri Log4Net Crashlytics Slack

Android’de hata raporlama maceralarım

  • ACRA çok başarılı bir kütüphane. Kurulumu çok kolay. Ancak benim denediğim zamanlarda büyük bir dezavantajı vardı. Backend’i yoktu, logları yazmak için Google Docs kulanıyordu. Oldukça verimsiz bir yöntemdi. İlişkimiz kısa sürdü.
  • Not: Artık Acralyzer adında open source bir backend varmış. Ama henüz denemedim.
  • Ücretsiz
  • Hazır slack entegrasyonu var

Crashlytics

Kurulumu

Kullanımı

try { HataFırlatanKodBlogum(); } catch (Exception e) { Crashlytics.logException(e); }
Crashlytics.setUserIdentifier("Login adı, eposta vs..");
Crashlytics.setInt("versiyon", 3); Crashlytics.setString("konum_saglayici", "network"); Crashlytics.setBool("sim_takili", true);
Crashlytics.log(Log.INFO, "TAG", "Bu cihaz rootlanmış.");

Sunucu logları

Apache log4Net

Kurulum

Yapısı

"%date %thread %-5level %logger %message%newline" "[2015-05-29 12:37:12,860] [69] [INFO] [eferhatg.forms.payment] [Ödeme alındı.] "

Konfigürasyon

<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a"/> ... </configSections>
<log4net> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="LOG\log.txt"/> <appendToFile value="true"/> <rollingStyle value="Size"/> <maxSizeRollBackups value="50"/> <maximumFileSize value="10MB"/> <staticLogFileName value="true"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %thread %-5level %logger %message%newline"/> </layout> </appender> ... <log4net>
<configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a"/> </configSections> <log4net> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="LOG\log.txt"/> <appendToFile value="true"/> <rollingStyle value="Size"/> <maxSizeRollBackups value="50"/> <maximumFileSize value="10MB"/> <staticLogFileName value="true"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %thread %-5level %logger %message%newline"/> </layout> </appender> <root> <level value="INFO"/> <appender-ref ref="RollingFileAppender"/> </root> <log4net> </configuration>
log4net.Config.XmlConfigurator.Configure();
//ConfigFile masaüstü uygulamalar için app.config olacak. [assembly: log4net.Config.XmlConfigurator(ConfigFile="Web.config", Watch = true)]
<appSettings> <add key="log4net.Internal.Debug" value="true"/> </appSettings>

Kullanımı

namespace eferhatg.forms { public class payment { private static readonly ILog Log = LogManager.GetLogger(typeof(payment)); } }
namespace eferhatg.forms { public class payment { private static readonly ILog Log = LogManager.GetLogger(typeof(payment)); public void pay(){ Log.Info("Ödeme Alınacak."); //Bu satırın ürettiği log aşağıdaki gibi olacaktır. //[2015-05-29 12:37:12,860] [69] [INFO] [eferhatg.forms.payment] [Ödeme Alınacak.] } } }

Logentries

Kurulum ve Entegrasyon

  • Bir Logentries hesabı yarat
    https://logentries.com adresinden bir hesap yaratıyoruz. Sonra arayüzden [Logs->Add New Log] diyerek .NET için Token TCP bir log kaydı oluşturuyoruz.
  • Logentries plugin’ini kurmak
    Nuget kullanarak projemize logentries.log4net plugin’ini kuruyoruz.
  • Web.Config’e logentries için bir appender eklemek.
    Web.config’i açıp <log4net> tagi içerisine aşağıdaki appender'i ekliyoruz.
<appender name="LeAppender" type="log4net.Appender.LogentriesAppender, LogentriesLog4net"> <Debug value="true" /> <HttpPut value="false" /> <Ssl value="false" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date %thread %-5level %logger %message%newline" /> </layout> </appender>
  • <appSettings>'e LOGENTRIES_TOKEN değeri eklemek
    Oluşturduğunuz log'un TOKEN değerini(Logentries arayüzünden edinebilirsiniz.) appSettings altına LOGENTRIES_TOKEN key'i ile ekliyoruz.
<appSettings> <add key="LOGENTRIES_TOKEN" value="***Burada sizin TOKEN'ınız olacak"/> ... </appSettings>

İletişim Güçtür

Neden Slack

  1. Email alternatifi
    Özellikle projeye ekiplerinde şimdiye kadarki en güçlü email alternatifi.
  2. Tüm gelişmeler tek bir yerde
    Projeye ait tartışmalarız, alarmlar, dosyalar, testler… aklınıza gelebilecek tüm bileşenler ve gelişmeler tek bir ekranda.
  3. Çok güçlü bir iletişim aracı
    Kanallar(channels) yardımı ile, email ile chat arasında, ikisinden de güçlü bir ekip iletişimi sağlıyor.
  4. Bir çok servis ile entegrasyon seçeneği
    Crashlytics, Logentries, Papertrail, Google Drive, Bitbucket, Dropbox, Heroku, Jenkins ve onlarcası.
  5. Arama yapmak kolay ve efektif
    Emailde arama yapmak bazen işkenceye dönüşebiliyor. Slack ile derinlerdeki bir bilgiye tek bir arama kutusuyla kolayca erişebiliyoruz.
  6. Dosya paylaşmak kolay
    İster Google Drive veya Dropbox’ı entegre ederek, ister direk upload ederek.
  7. Kod parçaları paylaşımı
    İstediğiniz syntaxda kod paylaşabilirsiniz.
  8. Mobil uygulaması var
    Projenize dair tüm gelişmelerden 7/24 haberdar olabilirsiniz.

Loglama candır

--

--

--

Mostly developer, almost traveller, already gamer http://eferhatg.com/

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Eyüp Ferhat Güdücü

Eyüp Ferhat Güdücü

Mostly developer, almost traveller, already gamer http://eferhatg.com/

More from Medium

Handling REST API calls with Flutter provider — Example Code

How to Set Up Jenkins and Jenkins Pipeline with Android : Step-by-Step Guide (Part 1)

Introduction to Maven ,Spring Framework and Spring Boot

Flutter Pagination With Caching data (SQLite database) — Part 2