小编Jen*_*ton的帖子

更改日志输出logrus的格式

我使用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

12
推荐指数
2
解决办法
1万
查看次数

具有不同配置道具的不同包 - 功能选项

我有一个需要配置的应用程序,我已经创建了一个配置结构,我输入配置作为该函数的参数.问题是配置结构变得更大(如整体)和更大,我将配置移动到我的应用程序中的不同功能,并且不需要所有字段,只有少数几个.我的问题是,如果有更好的方法在Go中实现它.

在努力找到好方法之后我发现了这篇文章(有点老但希望仍然相关),我想知道如何以及如果我可以用它来解决我的问题.

功能选项而不是配置结构 https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis

我需要在我的应用程序中注入一些配置属性

例如对于函数run(这是入口点)我需要注入log level和其他一些env变量一样port host

对于功能build我需要"注入"的build flavorbuild type等.

我的内容的任何示例都将非常有用

  1. 如何在代码中构造它?
  2. 怎么实现呢?

更新

我需要一些E2E示例如何 在同一个包和其他包中使用不同配置的功能方法

go

9
推荐指数
1
解决办法
370
查看次数

带开关和ForEach的Golang模板

我需要从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)

我做的是以下哪些不起作用

  1. 依赖关系类型"runner1"的想法(参见依赖结构实例中的type属性值)我需要运行几个命令,对于"runner2"我需要运行几个不同的命令
  2. 上面的那些命令(比如echo1的echo api1)应该写在我需要从模板创建的bash.script中

包主

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)

templates go

8
推荐指数
1
解决办法
518
查看次数

运行java jar - 没有主清单属性错误

我已经创建了简单的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没有帮助,但可能是错的

java intellij-idea pom.xml maven

7
推荐指数
2
解决办法
2万
查看次数

如何在launch.json中配置vs代码工作目录

我使用的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

visual-studio-code

5
推荐指数
2
解决办法
5330
查看次数

Docker for Golang应用程序

我有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 .

go docker

5
推荐指数
1
解决办法
1202
查看次数

如何在golang中使用调试日志

我的应用程序应该使用登录状态的调试.即我想要提供的所有日志都像log.debug

我已经读过它并找到以下内容

https://github.com/Sirupsen/logrus
https://github.com/uber-go/zap
Run Code Online (Sandbox Code Playgroud)

我的问题是我应该如何"告诉"现在在调试模式下运行的程序然后将打印所有日志,因为我相信应该来自外部... 例如将是非常有用的,因为我是新手打高尔夫球.

go

3
推荐指数
1
解决办法
5211
查看次数

然后不是函数承诺错误

我是承诺的新手,我使用蓝鸟文档从异步代码中获取数据

我尝试的是以下内容:

错误是:

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)

javascript node.js promise bluebird

2
推荐指数
1
解决办法
2万
查看次数

尝试在mac上运行命令时出现鱼错误

我使用以下命令,我安装了鱼

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)

有解决方法吗?

shell cmd fish

2
推荐指数
1
解决办法
257
查看次数

从本地包共享对象

我是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)

go

0
推荐指数
1
解决办法
148
查看次数

从 golang 程序进行 npm 安装

我需要在我创建的文件夹上运行 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)

知道如何克服这个问题吗?

go node.js npm

-1
推荐指数
1
解决办法
2919
查看次数