0%

背景

Golang项目中日志打印是很重要的功能。方便记录和定位程序执行过程及发生的错误。Golang提供了基础的log功能,但是功能不够强大,无法支持如日志格式或者日志归档功能。此次介绍的为zap日志库

zap案例

json类型日志打印在控制台

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
func createJsonLogger() *zap.Logger {
// 1、 创建logger配置
config := zapcore.EncoderConfig{
MessageKey: "msg", // json中msg信息的key名字,如果为空串,则json不会打印该信息
LevelKey: "level", // 日志级别的key名字
TimeKey: "ts", // 时间的key名字
CallerKey: "file", // 日志打印的文件及行号的key名字
StacktraceKey: "stacktrace", // 堆栈调用信息的key名字
EncodeTime: zapcore.ISO8601TimeEncoder,
EncodeLevel: zapcore.CapitalLevelEncoder, // 日志级别大写
EncodeCaller: zapcore.ShortCallerEncoder, // 短路径,文件名+行号
}
// 2、创建日志编码器
jsonEncoder := zapcore.NewJSONEncoder(config)
// 2、 创建日志 core
core := zapcore.NewCore(jsonEncoder, zapcore.AddSync(os.Stdout), zapcore.DebugLevel)

logger := zap.New(core, zap.AddCaller())
return logger

}


logger := createJsonLogger()
logger.Info("haha")

输出为
{"level":"INFO","ts":"2024-12-17T14:24:10.092+0800","file":"logs/zlog_test.go:12","msg":"haha"}

自定义日志输出实战

阅读全文 »

背景

传统项目上线过程为将编译后的项目安装包手动部署到对应服务器上。近年容器化技术普及,将应用程序与容器化技术结合,提高应用管理能力及快速扩缩容能力。

具体动作如下

  1. Golang程序编写
  2. 项目维护Dockerfile文件,定义程序编译及运行命令
  3. 打包docker镜像
  4. 通过docker镜像启动docker容器
  5. 访问容器中Golang程序

docker命令

先了解常见docker命令

  1. 镜像基础命令

    1
    2
    3
    docker images # 获取本机镜像列表
    docker pull 镜像名称:tag # 从远程仓库拉取对应tag镜像到本地,具体镜像可在https://hub.docker.com 查看
    docker rmi 镜像id # 删除本地镜像
  2. 容器基础命令

    1
    2
    3
    4
    5
    6
    docker ps # 查看正在运行的容器
    docker ps -a # 查看所有构建的容器
    docker rm -v 容器id # 删除指定容器
    docker exec -it 容器id /bin/bash # 进入指定id的容器内部(/bin/bash 解释器需要跟进镜像对应改变,又可能是/bin/sh)
    docker start 容器id # 启动容器
    docker stop 容器id # 停止容器
  3. 创建容器

    1
    docker run -d -p 8080:8080 -v /Users/zhangmengnan/docker_test/ext_file:/mnt/engine/server/logs --name gin-server-0.0.1 镜像id

    根据基础镜像构建一个容器

    • -d 构建容器后,后台运行
    • -p 创建端口映射 宿主端口:容器端口
    • -v 创建磁盘挂载, 宿主路径:容器路径,注意宿主路径内容会覆盖容器路径
    • –name 给创建的容器指定名字
阅读全文 »

背景:

记录hexo创建及发布blog过程

过程

1)本地创建一篇博客

1
hexo new 文章标题

会在 $博客目录/source/_posts 下产生 <文章标题.md> 文件

2)编写博客

在md文件中编写博客

3)本地预览

1
hexo server 

执行该命令,本地启动http服务,预览编写的博客

4)推到远程

确认博客无问题后,推送到远程

1
hexo deploy -g

编译本地静态文件后,推送到远程,稍等一会即可访问自己的博客

背景:

测试blog

背景:

发现mysql 连接数有大量增长情况,老是报警,分析连接数

Mysql

解释几个Mysql参数

1
2
3
4
5
6
7
8
9
10
11
12
mysql> show status like  'Threads%';

Threads_cached: mysql 服务器 缓存的线程, 服务对接客户端的连接请求, 计算方法: 8 + (max_connections / 100), 基本默认为9
Threads_connected: 客户端和 mysql服务端连接成功的连接数
Threads_created: 服务端一共创建的连接数、即线程数
Threads_running: 服务端正在运行的线程数

mysql> select @@max_connections;
151 该函数返回的是 mysql服务端最大连接数

mysql> select CONNECTION_ID();
该方法返回的是 连接id 即线程的id,复用同一个线程,也会分配不同的ID

mysql参数官网参数解释

CONNECTION_ID()官网描述

阅读全文 »

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

阅读全文 »