手写android Log 源码(简单版)

2023-10-27

有一天晚上,看了两篇老罗的博客:《Android日志系统Logcat源代码简要分析》和《Android日志系统驱动程序Logger源代码分析》。

于是我就想android10 中 log 是怎么实现的?然后又看了一篇别人的博客:《Android10.0 日志系统分析
算是勉强能看懂吧。

于是我再想要不模仿android10源码,实现一个简单的Log demo.

最后手贱的写了Log demo.

demo 地址:https://github.com/Hi-LookOut/Android/tree/master/android-log


项目结构如下:
请添加图片描述请添加图片描述如上图,android log 通信使用的是 socket通信。所以我剔除了源码中,复杂的初始化等流程,直接模仿了其socket通信的部分源码。

下面演示一下demo:

logService:

编译生成可执行文件:
       clang++ -g ./*.cpp -I ./include -o ./main -std=c++11  -lpthread
运行:
       ./main

请添加图片描述

log_client

编译生成可执行文件:
    clang++ -g ./*.cpp -I ./include -o ./log_client -std=c++11
运行:(支持多次运行)
    ./log_client    

请添加图片描述

logcat

编译生成可执行文件:
     clang++ -g ./*.cpp -I ./include -o ./logcat -std=c++11
运行:(支持多次运行)
    ./logcat -g 
将日志内容重定向:
    ./logcat -g > ./log.txt

请添加图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手写android Log 源码(简单版) 的相关文章

  • Vimeo 视频在 Android 6 设备上停止播放

    我正在尝试在我的应用程序中播放 Vimeo 的视频 问题是在 Android 6 设备上 视频会在一定时间后停止播放 在 API 较低的设备上一切正常 时间取决于质量 对于下面提供的网址的视频 播放一定分钟 1 到 3 视频质量有多低 播放
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • Android - 如何更改 TimePicker 中的文本颜色?

    我正在使用 TimePicker 到 LinearLayout 中 背景颜色 黑色 但是 我看不到 TimePicker 中的数字 并且我需要在布局中将背景颜色设置为黑色 如何更改 TimePicker 中的 textColor 我已经尝试
  • android httprequest java.net.UnknownHostException

    我想用android发出http请求 是使用这个 void testHTTP HttpClient httpClient new DefaultHttpClient HttpUriRequest request new HttpPost h
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • 当我“绘制”线条时,如何将点平均分配到 LineRenderer 的宽度曲线?

    我正在使用线条渲染器创建一个 绘图 应用程序 现在我尝试使用线条渲染器上的宽度曲线启用笔压 问题在于 AnimationCurve 的 时间 值 水平轴 从 0 标准化为 1 因此我不能在每次添加位置时都在其末尾添加一个值 除非有一个我不知
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • FCM onMessageReceived 应用程序运行时返回空白消息和标题

    正如您在标题中所写 当应用程序关闭时 它运行良好 并且onMessageReceived获取消息正文和标题 但如果应用程序处于前台模式 运行模式 则可以发送通知 但没有消息和标题 请问该怎么办 代码 Override public void
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • 耐用功能是否适合大量活动?

    我有一个场景 需要计算 500k 活动 都是小算盘 由于限制 我只能同时计算 30 个 想象一下下面的简单示例 FunctionName Crawl public static async Task
  • 在 Android 中使用 iText 将图像添加到特定位置

    我想使用 Android 中的 iText 将图像添加到 PDF 文件中的特定位置 这是一个可填写的表单 我添加了作为图像占位符的文本框 我想要做的就是像这样获取该文本框和图像 public class FormFill public st
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop
  • 错误:无效使用不完整类型“类 Move”/未定义对 Move::NONE 的引用

    拜托 我不知道为什么这个简单的代码被拒绝 它给了我 2 个编译错误 请帮帮我 I use 代码 块 20 03 我的编译器是GNU GCC 移动 hpp class Move public Move Move int int public

随机推荐

  • Django(8)-静态资源引用CSS和图片

    除了服务端生成的 HTML 以外 网络应用通常需要一些额外的文件 比如图片 脚本和样式表 来帮助渲染网络页面 在 Django 中 我们把这些文件统称为 静态文件 我们使用static文件来存放静态资源 django会在每个 INSTALL
  • pip install 出现Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问

    pip install U numpy进行更新的时候出现了上述的问题 百度了一下直接在install后面加上 user 就可以了 pip install user upgrade numpy
  • 使用ffmpeg对rtsp视频截图

    ffmpeg i rtsp 192 168 1 64 554 Streaming Channels 1 y f mjpeg t 0 001 s 1280x720 test jpg 使用ffmpeg对摄像头的视频流进行截图 rtsp 192
  • Linux内网环境安装nginx,离线安装nginx教程

    说明 本教程针对内网环境 没有互联网环境 安装nginx 安装前测试 nginx未安装时 无法访问 curl http localhost 80 第一步 请参考教程 本地yum源安装 教程连接如下 https note youdao com
  • IDEA在XML中提示SQL

    首先配置Database 选择数据库类型之后 填写数据库配置 配置完成之后右键表名 mybatis generator生成从controller dao单表的代码 Jump to Query Console跳转到IDEA编写SQL的页面 非
  • Stable Diffusion界面参数及模型使用

    系列文章目录 本地部署Stable Diffusion教程 亲测可以安装成功 谷歌Colab云端部署Stable Diffusion 进行绘图 文章目录 系列文章目录 前言 Stable Diffusion界面参数 一 模型是干什么的 二
  • uniapp引入iconfont图标

    1 iconfont官网下载好图标并解压 2 将以下文件复制到项目中 3 文件在项目中的位置 4 打开iconfont css文件修改 font face 里面的路径 修改为相对路径 static fonts 示例如下 5 在App vue
  • 利用mysql load data秒级别大批量写入数据,建议单次10w+以上~速度远超批量insert,附上完整封装工具

    平时项目中 有时候可能会遇到需要大批量写入数据到mysql数据库中的场景 这时候我们可以利用mysql自带的load data语法 先将数据写入文本文件 再将文件读入数据库 具体用法看下面 1 表结构如下 CREATE TABLE wewo
  • Win10家庭版禁用系统更新方法汇总及问题解决

    这个文章针对没有组策略gpedit msc的win10家庭版 网上有几种方法 我在这里汇总一下 并记录之后遇到的问题及 一 先启用组策略 然后禁止更新 1 启用组策略 win10家庭版是没有组策略gpedit msc的 在电脑任意位置创建一
  • 微软宣布在 Excel 中使用 Python:结合了 Python 的强大功能和 Excel 的灵活性。

    文章目录 Excel 中的 Python 有何独特之处 1 Excel 中的 Python 是为分析师构建的 高级可视化 机器学习 预测分析和预测 数据清理 2 Excel 中的 Python 通过 Anaconda 展示了最好的 Pyth
  • C语言基础系列(三)——链表

    C语言基础系列 三 链表 1 链表的定义 链表是一些包含数据的独立结构体 被称为节点 的集合 1 1 单链表 在单链表中 每个节点包含一个指向链表下一节点的指针 示意图如下 定义的节点结构体声明如下 typedef struct NODE
  • 合宙Air103

    目录 基础资料 探讨重点 实现功能 硬件准备 软件版本 软件使用 初始化硬件i2c 发送指令给AHT10触发测量并读数 状态位说明 读取流程 核心函数注 基础资料 基于Air103开发板 Air103 LuatOS 文档 上手 开发上手 L
  • Swagger3快速入门

    Swagger 快速入门SpringBoot集成Swagger 依赖 配置类 SwaggerConfig 访问 配置Swagger 可以通过apiInfo 属性配置文档信息 完整版 访问 controller 测试接口 正则表达式设置路径范
  • 数据结构 每日一练:选择 + 编程

    目录 选择 编程 选择 1 在一个单链表中 已知q所指结点是p所指结点的前驱结点 若在q和p之间插入结点s 则执行 A s gt next p gt next p gt next s B p gt next s gt next s gt n
  • 网络流经典模型——最大权闭合子图

    网络流经典模型 最大权闭合子图 什么是闭合子图 闭合子图的概念 通俗点说就是选出一个图的子图 使得子图中的所有点出度指向的点依旧在这个子图内 则说明此子图是闭合子图 如下图 最大权闭合子图 假设每个点具有点权值 在一个图的所有闭合子图中 点
  • 勾选同意XXX协议,才能点击提交一类的JS页面,源码如下

    真是醉了 之前的可以用 正常都会调一下的 直接抄肯定随着时间推移会有点问题 算了 我自己改改
  • mmsegmentation继续意外中断,继续训练

    先进行微调的增量学习 有机会的话则继续进行训练 之前实验室突然停电了 然后憨憨的我直接重新训练了 后来仔细看了说明文档 发现自己当时可以继续训练的
  • 吾道——快

    前言 我曾是拖延症重度患者 曾经尝试在知乎上寻找答案 看完了相关答案 发现答案惊人的相似 拖延症患者追求高效 效率 拖延症患者患者都有做计划 有很高的期待 完美主义 拖延症患者都有效率惊人爆表的状态 Deadline Deadline是生产
  • Mac电脑使用:您的安全性偏好设置仅允许安装来自App Store和被认可的开发者的应用(解决方法)

    昨天准备给电脑上安装 SEED 然后别人给我一个压缩包安装 结果安装之后 打开软件却弹出提示框 提示 打不开SEED 因为它来自身份不明的开发者 点击 好 弹框关闭 SEED却打不开 一 造成有这种提示的原因是由于你的电脑安全性设置比较高导
  • 手写android Log 源码(简单版)

    有一天晚上 看了两篇老罗的博客 Android日志系统Logcat源代码简要分析 和 Android日志系统驱动程序Logger源代码分析 于是我就想android10 中 log 是怎么实现的 然后又看了一篇别人的博客 Android10