我使用go logrus,我需要更改输出消息的格式,我尝试了几个没有成功的事情
我需要的是格式化为logrus的格式
[error]: datetime - message
我没有成功的尝试是这样的
logger := &logrus.Logger{
Out: os.Stderr,
Level: level,
Formatter: &logrus.TextFormatter{
DisableColors: true,
TimestampFormat : "2006-01-02 15:04:05",
FullTimestamp:true,
},
}
Run Code Online (Sandbox Code Playgroud)
这产生以下结果
time="2018-02-25 10:42:20" level=error msg="Starting Process"
Run Code Online (Sandbox Code Playgroud)
我希望它成为现实
[INFO]:2018-02-25 10:42:20 - Starting Process
Run Code Online (Sandbox Code Playgroud)
更新 如果zap更好地自定义 https://github.com/uber-go/zap, 它也可以是一个解决方案
我有一个需要配置的应用程序,我已经创建了一个配置结构,我输入配置作为该函数的参数.问题是配置结构变得更大(如整体)和更大,我将配置移动到我的应用程序中的不同功能,并且不需要所有字段,只有少数几个.我的问题是,如果有更好的方法在Go中实现它.
在努力找到好方法之后我发现了这篇文章(有点老但希望仍然相关),我想知道如何以及如果我可以用它来解决我的问题.
功能选项而不是配置结构 https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis
我需要在我的应用程序中注入一些配置属性
例如对于函数run(这是入口点)我需要注入log level和其他一些env变量一样port host
对于功能build我需要"注入"的build flavor和build type等.
我的内容的任何示例都将非常有用
更新
我需要一些E2E示例如何 在同一个包和其他包中使用不同配置的功能方法
我需要从golang程序创建bash.sh文件,该文件应该执行以下操作:
创建的ForEach上依赖回路和读取的类型和根据打印类型不同的回波消息(命令)我需要它一起工作开关
对type与Golang的依赖性的
例如以下内容
对于每个依赖项,添加echo的类型消息
#!/bin/bash
for a in $(dependencies.type)
echo $runner //from type
done
Run Code Online (Sandbox Code Playgroud)
我做的是以下哪些不起作用
包主
import (
"fmt"
"log"
"text/template"
"gopkg.in/yaml.v2"
"os"
)
type File struct {
TypeVersion string `yaml:"_type-version"`
Dependency []Dependency
}
type Dependency struct {
Name string
Type string
CWD string
Install []Install
}
type Install map[string]string
var data = `
_type-version: "1.0.0"
dependency:
- name: ui
type: runner …Run Code Online (Sandbox Code Playgroud) 我已经创建了简单的java程序(maven with pom)当我用CMD运行一些命令时它应该在给定的路径下创建一个文件...我做了mvn clean install
哪个成功完成,现在我想从命令行使用这个创建的jar像follwoing:
java -jar "/Users/i012/IdeaProjects/myproj/target/test.rts-1.0-SNAPSHOT.jar" path2genfile2create
Run Code Online (Sandbox Code Playgroud)
哪个应该运行我的程序(这是我第一次尝试这样的东西...)
但我得到的错误是:
no main manifest attribute, in /Users/i012/IdeaProjects/myproj/target/test.rts-1.0-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)
这里可能缺少什么?哪个显示属性?
错误不是来自我创建的类 ......
我创建了一些META-INF/MANIFEST.MF没有帮助,但可能是错的
我使用的Goland(同webstorm /的IntelliJ等),IDE和调试配置存在时,你可以配置一个地方working directory现在我试着将工作与VSCODE,我不觉得这配置,有点研究后,我发现下面的JSON的应处置这,但找不到工作目录的正确位置
例如这是我的工作目录
/Users/i022226/go/src/myapp
"configurations": [{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceRoot}"
},
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceRoot}"
},
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"remotePath": "",
"port": 2345,
"host": "127.0.0.1",
"program": "${fileDirname}",
"env": {},
"args": [],
"showLog": true
}
Run Code Online (Sandbox Code Playgroud)
在“ launch.json添加配置”按钮中,当我键入内容时,cwd我没有任何输入,有任何想法吗?
在这篇文章中cwd是在,option但我找不到option
https://github.com/Microsoft/vscode/issues/856
我有golang应用程序,我要为其构建docker映像,调用的应用程序文件夹cloud-native-go,并且dockerfile在根项目下。
FROM golang:alpine3.7
WORKDIR /go/src/app
COPY . .
RUN apk add --no-cache git
RUN go-wrapper download # "go get -d -v ./..."
RUN go-wrapper install # "go install -v ./..."
#final stage
FROM alpine:latest
RUN apk --no-cache add ca-certificates
COPY --from=builder /go/bin/app /app
ENTRYPOINT ./app
LABEL Name=cloud-native-go Version=0.0.1
EXPOSE 3000
Run Code Online (Sandbox Code Playgroud)
错误是:
Step 5/12 : RUN go-wrapper download # "go get -d -v ./..."
---> Running in 70c2e00f332d
/bin/sh: go-wrapper: not found
Run Code Online (Sandbox Code Playgroud)
我用它建造
docker build -t cloud-native-go:1.0.0 .
我的应用程序应该使用登录状态的调试.即我想要提供的所有日志都像log.debug
我已经读过它并找到以下内容
https://github.com/Sirupsen/logrus
https://github.com/uber-go/zap
Run Code Online (Sandbox Code Playgroud)
我的问题是我应该如何"告诉"现在在调试模式下运行的程序然后将打印所有日志,因为我相信应该来自外部... 例如将是非常有用的,因为我是新手打高尔夫球.
我是承诺的新手,我使用蓝鸟文档从异步代码中获取数据
我尝试的是以下内容:
错误是:
getToken.then不是一个功能
我怎么能避免呢?
这个文件是connection.js
return connection.getToken.then(function(connToken){
console.log(connToken);
}).catch({
})
Run Code Online (Sandbox Code Playgroud)
这是moduleB中的getToken代码
const request = require("request-promise");
const Promise = require("bluebird");
module.exports = {
getToken: function () {
return new Promise((resolve, reject) => {
let options = {
method: 'POST',
url: 'https://authentication.arc.com/oauth/token',
headers: {
grant_type: 'client_credentials',
authorization: 'Q0MDdmMCFiMTc0fGNvlQVRDWThDNDFsdkhibGNTbz0=',
accept: 'application/json;charset=utf-8',
'content-type': 'application/x-www-form-urlencoded'
},
form: {
grant_type: 'client_credentials',
token_format: 'opaque&response_type=token'
}
};
request(options)
.then(function (body) {
return body;
})
.catch(function (err) {
return err;
});
})
}
}
Run Code Online (Sandbox Code Playgroud) 我使用以下命令,我安装了鱼
diff -y <(unzip -l old.zip) <(unzip -l new.zip)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
fish: Invalid redirection target: (unzip -l new.zip)
diff -y <(unzip -l new.zip) <(unzip -l old.zip)
^
fish: Invalid redirection target: (unzip -l old.zip)
diff -y <(unzip -l new.zip) <(unzip -l old.zip)
Run Code Online (Sandbox Code Playgroud)
有解决方法吗?
我是Go的新手,我已经创建了一个按预期工作的应用程序。
我的应用程序结构如下:
myproj
Gopkg.toml
Gopkg.lock
src
server
main.go
utils
file1.go
logger.go
handler
handler1.go
handler2.go
Run Code Online (Sandbox Code Playgroud)
现在在main.go文件中,我创建了一个如下记录器:
文件 server-> main.go
import (
"handler"
"utils"
"github.com/sirupsen/logrus"
)
var logger *logrus.Logger
fun init(){
logger = utils.InitLogs()
}
func main(){
logger.info("my message")
…
handler.run()
}
Run Code Online (Sandbox Code Playgroud)
一切工作按预期!
现在我想在handler1&2文件中使用记录器(来自本地项目中的diff包)
为此,我执行了以下步骤。在处理程序内init,记录器(与我在主文件中所做的完全一样)正在运行
文件 handler-> handler1.go
import (
"utils"
"github.com/sirupsen/logrus"
)
var logger *logrus.Logger
fun init(){
//Init the logger again
logger = utils.InitLogs()
}
func run(){
//here Im not using logger otherwise maybe I …Run Code Online (Sandbox Code Playgroud) 我需要在我创建的文件夹上运行 npm install
我正在做以下事情
command := exec.Command("../app/node/", "npm", "install")
command.Dir = "."
output, err := command.Output()
if err != nil {
log.Println(err)
}
fmt.Printf("%s", output)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
fork/exec ../app/node/: permission denied
Run Code Online (Sandbox Code Playgroud)
知道如何克服这个问题吗?