8-dars Android. Loglar bilan ishlash.


Log – bu bajarilgan harakatlarni tashqi faylga tartibli yozib borishdir. Kelin misollarda ko’ramiz. Mening kompyuterimda denwer paketi o’rnatilgan va Denwerning tarkibiga Apache ham kiradi. Apachening loglari quydagi manzilda saqlanadi: c:\WebServers\usr\local\apache\logs\ ushbu papkada 2 ta log faylga ko’zimiz tushadi. -access.log, error.log.
Access.log fayliga kiramiz va bajarilgan holatlarni ko’ramiz. Kecha yozgan maqolamda json.php dan foydalangan edik va uning logi quydagicha saqlangan:
127.0.0.1 - - [02/Mar/2014:13:57:16 +0500] "GET /json/json.php HTTP/1.1" 200 209

Ko’rib turganimizdag tartib bilan saqlangan birinchi server ipsi, ikkinchi kun, oy, yil, soat, minut, sekund, time zona, uchunchi http metodi, url, to’rtinchi statusi. Biz ushbu darsimizda Androidda loglar bilan ishlashni o’rganamiz. Loglar bilan ishlashning avzalliklari judda ko’p. Misol uchun yuqorida apacheni loglarini ko’rdik va buni server administrator nazorat qilib boradi.
Androidda loglar bilan ishlash sizga hech qanday qiyinchilik ko’rsatmaydi. Keling yangi loyiha yaratamiz.
Application name: Log
Project Name: Log
Package Name: uz.projects.log
Target SDK: API 17 Android 4.2(Jelly Bean)
Create Activity: MainActivity
Activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="30dp"
android:orientation="vertical">
<TextView
android:id="@+id/tvOut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="50dp"
android:text="TextView">
</TextView>
<Button
android:id="@+id/btnOk"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="OK">
</Button>
<Button
android:id="@+id/btnCancel"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Cancel">
</Button>
</LinearLayout>
</LinearLayout>

MainActivity.java:
package uz.projects.log;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener{
	TextView tvOut;
	Button btnOk;
	Button btnCancel;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tvOut = (TextView) findViewById(R.id.tvOut);
		btnOk = (Button) findViewById(R.id.btnOk);
		btnCancel = (Button) findViewById(R.id.btnCancel);
		btnOk.setOnClickListener(this);
		btnCancel.setOnClickListener(this);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.btnOk:
		// ОК
		tvOut.setText("OK tugmasini bosdingiz");
		break;
		case R.id.btnCancel:
		// Cancel
		tvOut.setText("Cancel tugmasini bosdingiz");
		break;
		}
	}

}

Saqlaymiz va tekshirib ko’ramiz.
Androidda loglar bilan ishlashimiz uchun bizga LogCat yordom beradi.
LogCatni Eclipseda Window ->Show view->other…->LogCat va ok tugmasini bosamiz.

Eclipsening pastki qismida(sizning joylashtirishingzi tartibi) quydagicha bo’lim hosil bo’ladi.

Androidda logning darajalari(balki tuzulishidir, balki filterlari, aniq nima deyishni bilmadim) ERROR, WARN, INFO, DEBUG, VERBOSE lardan iborat. Siz LogCat bo’limida quydagi darajalarning bosh harfini klaviaturada bosish bilan filter qilsangiz ham bo’ladi. LogCatda siz Filter qo’ysangiz ham bo’ladi va bunda sizga loglarning teglari yordom beradi.
Keling amalyotga o’tamiz. Android loglar bilan ishlash judda oson va bizga Log classi va uning metodlari yordom beradi. Log.v() Log.d() Log.i() Log.w()
and Log.e(). Bu yerda class va uning metodlari Yuqorida etib o’tgan log darajalarining bosh harflari bilan ko’rsatilgan.
Misol qilib Log.d() ni olaylik va uning metodida ikkita kiruvchi parameter birinchisiteg va ikkinchisi tekistdir.
MainActivity classimizda tegimizga nom berish uchun TAG deb string tipidagi o’zgarmas ni elon qilamiz.
private static final String TAG = "BizningLoglarimiz";

Oncreate metodiga o’tib quydagicha kiritamiz:
Log.d(TAG, "Button hodisalari"); 


Full code:
package uz.projects.log;

import android.R.string;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener{
	TextView tvOut;
	Button btnOk;
	Button btnCancel;
	
	private static final String TAG="BizningLoglarimiz";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tvOut = (TextView) findViewById(R.id.tvOut);
		btnOk = (Button) findViewById(R.id.btnOk);
		btnCancel = (Button) findViewById(R.id.btnCancel);
		Log.d(TAG, "Button hodisalari");
		btnOk.setOnClickListener(this);
		btnCancel.setOnClickListener(this);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.btnOk:
		// OK tugmasi
		tvOut.setText("OK tugmasini bosdingiz");
		Log.d(TAG, "Ok tugmasi bosildi");
		break;
		case R.id.btnCancel:
		//  Cancel tugmasi
		tvOut.setText("Cancel tugmasini bosdingiz");
		Log.d(TAG, "Cancel tugmasi bosildi");
		break;
		}
	}

}

Maqolani yozishda startandroid.ru saytidan foydalanildi.
7-dars. Hodisalar bilan ishlashni optimizatsiya qilamiz.

Нет комментариев