本节书摘来异步社区《libGDX移动游戏开发从入门到精通》一书中的第2章,第2.4节,作者: 黄俊东 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.4 日志工具
众所周知,日志在调试程序的时候起着非常重要的作用。这一节我们就来对比学习Android中的日志工具与libGDX中的日志工具。
2.4.1 Android中的日志等级及输出方法
在Android原生中,在程序中输出日志使用android.util.Log类。该类提供了若干静态方法。
Log.v(String tag, String msg);
Log.d(String tag, String msg);
Log.i(String tag, String msg);
Log.w(String tag, String msg);
Log.e(String tag, String msg);
分别对应Verbose、Debug、Info、Warning、Error。tag是一个标识,可以是任意字符串,通常可以使用类名+方法名,主要是用来在查看日志时提供一个筛选条件。
以下通过一个例子来演示使用Android原生来输出日志。
新建一个Android项目,在该项目中的MainActicity中编写以下代码。该代码主要在onCreate( )方法里面通过Log来输出各个级别的日志,用于给大家认识各个级别的日志信息的特点。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.v("------->verbose", "这是verbose级别的日志");
Log.d("------->debug", "这是debug级别的日志");
Log.i("------->info", "这是info级别的日志");
Log.w("------->warn", "这是warn级别的日志");
Log.e("------->error", "这是error级别的日志");
}
@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;
}
}
程序运行结果如图2.8所示。
2.4.2 libGDX中的日志等级及输出方法
在libGDX中,如果想要输出日志,主要是通过Application这个接口,它提供了3种输出日志的方式:
Gdx.app.log("MyTag", "my informative message");//对应Android原生的info级别
Gdx.app.error("MyTag", "my error message", exception);//对应error级别
Gdx.app.debug("MyTag", "my debug message");//对应Android原生的debug级别
在libGDX中,可以通过代码来设置日志从哪一个级别开始输出:
Gdx.app.setLogLevel(logLevel);//从logLevel级别开始输出日志
logLevel可以是以下几种中的一种:
Application.LOG_NONE: 过滤掉所有的日志
Application.LOG_DEBUG: 输出>=debug级别的日志。对于libGDX来说,就等于是输出所有日志
Application.LOG_ERROR: 输出>=error级别的日志。对于libGDX来说,就等于是只输出error级别的日志
Application.LOG_INFO: 输出>=info级别的日志。对于libGDX来说,就等于是输出info和error两个级别的日志
以下通过例子来演示libGDX中的日志输出。
新建一个libGDX项目,再去MyGame类编写一下代码(MainActivity类的代码与HelloWorld的相同)。
public class MyGame implements ApplicationListener {
@Override
public void create() {
/**
* Application.LOG_NONE: 隐藏所有的log()
* Application.LOG_DEBUG: 显示>=debug级别的log
* Application.LOG_INFO: 显示>=info级别 的log
* Application.LOG_ERROR: 显示>=error级别的log
*
* 各个级别的关系如下:
* verbose
* debug
* info
* warn
* error
* asset
*/
// Gdx.app.setLogLevel(Application.LOG_NONE);//设置从哪一个级别的日志开始输出
}
@Override
public void dispose() {
}
@Override
public void pause() {
}
@Override
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);// 设置背景为白色
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);// 清屏
//测试各个级别的日志输出
// Gdx.app.log("mytag...", "log mytag");
// Gdx.app.error("mytag error", "log error");
// Gdx.app.debug("debug mytag...", "my debug tag");
System.out.println("---------->hello world");
}
@Override
public void resize(int arg0, int arg1) {
}
@Override
public void resume() {
}
}
在运行的时候,大家可以依次设置各个级别的起始日志来看看Logcat中日志输出的差异。
2.4.3 一种方便的输出日志的方法
2.4.1小节与2.4.2小节分别介绍了Android中与libGDX中输出日志的方式。在真实项目开发中,你还可以通过以下代码来输出日志:
System.out.println("---------->hello world");
这时候你在Logcat中会看到以下效果,如图2.9所示。