Android最全Android 日志输出(println、logv、logd、logi、logw,2024年最新Android学习教程

最后

都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。

技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;

我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

2021年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家2021年万事大吉。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

一、简介


image.png

  • 之所以有这么多有区分的方法,这也是 Log的分类。Log 的分类就如同 Log 的静态常量成员定义的那样,而 Log 的优先级按照数字大小排列,数字大的优先级高。

  • Log.println() 能达到与 Log.v()、Log.d()、… 等方法同样的输出效果,只是在用它时,要指定对应的优先级。

二、案例


  • 日志输出代码

// 一般填写当前文件名

public static final String TAG=“MainActivity”;

// System.out:正常输出

System.out.println(“onCreate:System.out”);

// Log.println:即 Verbose,输出普通信息

Log.println(1, TAG, “onCreate: log.println”);

// logv:即 Verbose,输出普通信息

Log.v(TAG, “onCreate: logv”);

// logd:即 Debug,输出调试信息

Log.d(TAG, “onCreate: logd”);

// loge:即 Error,输出错误信息

Log.e(TAG, “onCreate: loge”);

// logi:即 Information,输出提示信息

Log.i(TAG, “onCreate: logi”);

// logm:即 Debug,输出调试信息

Log.d(TAG, “onCreate:logm”);

// logr:即 Debug,输出调试信息

Log.d(TAG, “onCreate: logr”);

// logw:即 Warning,输出警告信息

Log.w(TAG, “onCreate: logw”);

// logwtf:即 What a terrible failure,输出非常致命的 FAULT 信息,可能杀死当前的进程

Log.wtf(TAG, “onCreate: logwtf”);

  • 日志输出结果:

2021-09-27 14:13:48.480 32564-32564/com.example.test I/System.out: onCreate:System.out

最后

分享一份NDK基础开发资料

详解:Linux网络虚拟化技术

分享内容包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

朋友,可以戳这里获取](https://bbs.youkuaiyun.com/topics/618156601)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

<think>好的,我现在要解决用户在go-zero框架中使用log.Println输出req.Compower长度的问题。首先,我需要确认用户提到的log.Println是否正确使用。根据引用[1],log.Println可以输出日志,如log.Println("This is a basic log message.")。所以用户需要打印的是某个结构体字段的长度,比如字符串或切片的长度。 接下来,用户提到req.Compower,这应该是一个结构体中的字段。假设req是一个请求对象,Compower可能是字符串、切片或数组。因此,用户需要获取该字段的长度并使用log.Println输出。 然后,我需要考虑go-zero的上下文。引用[3]提到goctl是go-zero的代码生成器,可能在微服务中生成代码结构。例如,在user-score微服务中,可能需要处理RPC请求,如引用[4]所示。用户可能在处理请求时需要记录日志。 此外,编码问题可能导致乱码,如引用[2]所述,但用户的问题是关于正确使用log.Println,所以暂时不需要处理编码,除非输出出现乱码。不过用户的问题集中在正确打印长度,所以重点是语法和结构。 可能的错误点包括:是否正确访问了Compower字段,是否调用了正确的长度方法。例如,如果Compower是字符串,则用len(req.Compower);如果是切片,同样用len。如果Compower是指针,可能需要解引用,但需要确认结构定义。 示例代码应展示如何在go-zero的服务中获取请求对象,并记录其Compower字段的长度。需要确保导入log包,并且req已经被正确初始化。 最后,需要提醒用户处理可能的nil指针,避免运行时错误。例如,如果req或Compower为nil,访问长度会导致panic。因此,在日志输出前应进行必要的检查。 总结步骤:导入log包,在适当的位置(如处理请求的方法中)使用log.Println输出len(req.Compower),并处理可能的错误情况。</think>在 go-zero 框架中使用 `log.Println` 输出 `req.Compower` 长度的示例如下: ```go import "log" func (l *YourLogic) YourHandler(ctx context.Context, req *types.YourRequestType) { // 输出 Compower 长度 log.Printf("Compower length: %d", len(req.Compower)) // 更推荐使用 log.Printf 格式化 // 或直接使用 log.Println log.Println("Compower length:", len(req.Compower)) } ``` ### 关键点说明 1. **字段类型验证**: - 确保 `req.Compower` 是 `string`、`slice` 或 `array` 类型,`len()` 才能正确获取长度 - 如果是 `*YourStruct` 指针类型,需要先判空:`if req != nil && req.Compower != nil { ... }`[^5] 2. **日志实践建议**: - 添加有意义的上下文信息:`log.Println("用户权限字段长度:", len(req.Compower))` - 重要日志建议使用结构化日志组件(如 `zerolog`)代替原生 log 包 3. **编码规范**: - 推荐使用 go-zero 自带的 `logx` 组件(支持分级日志): ```go logx.Infof("Compower length: %d", len(req.Compower)) ``` - 通过 `servicecontext.go` 注入日志配置[^4] ### 常见错误处理 1. **空指针问题**: ```go if req == nil { logx.Error("接收到空请求") return } ``` 2. **类型断言问题**: ```go if str, ok := req.Compower.(string); ok { logx.Info("字符串长度:", len(str)) } ``` [^1]: 基础日志输出方法 [^4]: 服务上下文配置 : 空指针异常预防
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值