我正在使用 Go Gin 设置一个小型 API,但是我无法说服记录器输出 JSON。默认情况下它是一个键/值字符串,但我需要它作为 json。
我怎样才能做到这一点?我觉得它应该很容易支持,但我一直在努力使用自定义格式化功能,我需要自己考虑各种参数。
或者,我也使用 uber/zap 记录器手动记录,但我还没有找到用我的记录器替换 gin 记录器的方法。
任何指点都将不胜感激,因为 gin 的 github 上的文档并没有太大帮助。
谢谢!
编辑:澄清一下,添加中间件有助于记录请求,但我正在寻找为 Gin 设置 JSON 日志记录的单点(例如:包括与请求无关的日志,例如框架内部的调试/信息日志)
我有以下配置:
守护进程:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: nginx-ingress
namespace: nginx-ingress
spec:
selector:
matchLabels:
app: nginx-ingress
template:
metadata:
labels:
app: nginx-ingress
spec:
serviceAccountName: nginx-ingress
containers:
- image: nginx/nginx-ingress:1.4.2-alpine
imagePullPolicy: Always
name: nginx-ingress
ports:
- name: http
containerPort: 80
hostPort: 80
- name: https
containerPort: 443
hostPort: 443
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
args:
- -nginx-configmaps=$(POD_NAMESPACE)/nginx-config
- -default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret
Run Code Online (Sandbox Code Playgroud)
主要配置:
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
namespace: nginx-ingress
data:
proxy-set-headers: "nginx-ingress/custom-headers" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用生成 Ed25519 密钥/对
openssl genpkey -algorithm Ed25519 -out ed25519key.pem
Run Code Online (Sandbox Code Playgroud)
然而,在我的 MacOS 上我得到了这个:
Algorithm Ed25519 not found
Run Code Online (Sandbox Code Playgroud)
我正在运行 OpenSSL / LibreSSL 3.2.5,但我不知道为什么这个算法不可用。
我缺少/需要安装什么东西吗?
我正在后端通过 REST api 构建一个小的 Angular 前端支持,但我遇到了一个非常奇怪的问题:执行 http.post(url, data, params) 结果什么也没有发生(没有任何迹象表明请求曾经命中webserver,在 Chrome 开发者工具中绝对没有记录请求,这与 this.http.get() 请求相反,后者适用于同一服务器上的 URL)。
export class RestComponent {
constructor ( private http: Http ) {}
sendStuff() {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
this.http.post('http://localhost:3021/api/data', {'data': 3}, options)
.catch(this.handleError);
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得很愚蠢,因为它一定是相当明显但它逃脱了我的东西。我创建了一个简单的组件,它只有两种方法,一种通过 post 发送硬编码数据,另一种通过 get 获取硬编码 json,第二个有效,但第一个无效。
将不胜感激任何指针。
谢谢!
我使用 awk 来过滤上一个命令 (docker image ls) 返回的输出,该命令是制表符分隔的列。
我想打印前两列,中间有一个 : 。
我尝试过的:
docker image ls | awk '{ print $1\:$2}'
但无论我如何尝试打印 $1 和 $2 我仍然得到
awk: syntax error at source line 1
context is
{ print $1 >>> \ <<< \ $2}
awk: illegal statement at source line 1
Run Code Online (Sandbox Code Playgroud)
如何在输出中使用 : ?
谢谢!
我正在尝试在专用服务器上设置SSH身份验证,但是即使我已经按照大多数教程进行操作(归结为:生成rsa密钥对,将猫公钥转换为服务器authorized_keys,chmod 600精化密钥,chmod 700 .ssh文件夹,设置ssh_config并转到)。
当前,这是我的设置(ssh_config):
Host *
PasswordAuthentication yes
PermitRootLogin without-password
StrictModes no
# ForwardAgent no
# ForwardX11 no
# ForwardX11Trusted yes
# RhostsRSAAuthentication no
# RSAAuthentication yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# GSSAPIKeyExchange no
# GSSAPITrustDNS no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
# Port 22
# …Run Code Online (Sandbox Code Playgroud)