{"id":23006681,"url":"https://github.com/aaronvb/logparams","last_synced_at":"2026-04-27T18:04:10.098Z","repository":{"id":57519079,"uuid":"248866558","full_name":"aaronvb/logparams","owner":"aaronvb","description":"Go HTTP request middleware that prints parameters in the HTTP request.","archived":false,"fork":false,"pushed_at":"2023-08-02T08:57:25.000Z","size":59,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-02T15:13:55.205Z","etag":null,"topics":["go","golang","http-requests","json","logging","logparams","logs","middleware","parameters"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aaronvb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-20T22:48:10.000Z","updated_at":"2023-08-02T05:40:46.000Z","dependencies_parsed_at":"2024-12-15T08:23:22.073Z","dependency_job_id":null,"html_url":"https://github.com/aaronvb/logparams","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/aaronvb/logparams","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronvb%2Flogparams","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronvb%2Flogparams/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronvb%2Flogparams/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronvb%2Flogparams/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aaronvb","download_url":"https://codeload.github.com/aaronvb/logparams/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aaronvb%2Flogparams/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262352129,"owners_count":23297642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","http-requests","json","logging","logparams","logs","middleware","parameters"],"created_at":"2024-12-15T08:13:17.062Z","updated_at":"2026-04-27T18:04:05.060Z","avatar_url":"https://github.com/aaronvb.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# logparams\n[![go.dev Reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go\u0026logoColor=white\u0026style=flat)](https://pkg.go.dev/github.com/aaronvb/logparams) \n[![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/aaronvb/logparams/go.yml?label=tests)](https://github.com/aaronvb/logparams/actions/workflows/go.yml)\n\nThis is a Go middleware log output that prints parameters if present in the HTTP request. Currently supports `PostForm`, `query params`, and `JSON` body.\n\nThe output can be a string or printed directly to the logger. Recommend using with middleware, see example below.\n\n## Install\n```sh\ngo get -u github.com/aaronvb/logparams\n```\n\n## Usage\nUsing logger:\n```go\nvar logger log.Logger{}\nlp := logparams.LogParams{Request: r}\nlp.ToLogger(\u0026logger)\n```\n\nOutput to a string:\n```go\nlp := logparams.LogParams{Request: r}\nlp.ToString()\n```\n\nResult:\n```sh\nParameters: {\"foo\" =\u003e \"bar\", \"hello\" =\u003e \"world\"}\n```\n\nReturning data in struct:\n```go\nlp := logparams.LogParams{Request: r}\nlp.ToFields()\n```\n```go\ntype ParamFields struct {\n\tForm      map[string]string\n\tQuery     map[string]string\n\tJson      map[string]interface{}\n\tJsonArray []map[string]interface{}\n}\n```\n\n\n## Middleware Example (using [gorilla/mux](https://github.com/gorilla/mux))\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n\t\"os\"\n\n\t\"github.com/aaronvb/logparams\"\n\n\t\"github.com/gorilla/mux\"\n)\n\ntype application struct {\n\terrorLog *log.Logger\n\tinfoLog  *log.Logger\n}\n\nfunc main() {\n\tinfoLog := log.New(os.Stdout, \"INFO\\t\", log.Ldate|log.Ltime)\n\terrorLog := log.New(os.Stderr, \"ERROR\\t\", log.Ldate|log.Ltime|log.Lshortfile)\n\n\tapp := \u0026application{\n\t\terrorLog: errorLog,\n\t\tinfoLog:  infoLog,\n\t}\n\n\tsrv := \u0026http.Server{\n\t\tAddr:     \":8080\",\n\t\tErrorLog: errorLog,\n\t\tHandler:  app.routes(),\n\t}\n\n\tinfoLog.Printf(\"Starting server on %s\", \":8080\")\n\terr := srv.ListenAndServe()\n\terrorLog.Fatal(err)\n}\n\nfunc (app *application) routes() http.Handler {\n\tr := mux.NewRouter()\n\tr.HandleFunc(\"/foobar\", app.foobar).Methods(\"POST\")\n\n\t// Middleware\n\tr.Use(app.logRequest)\n\tr.Use(app.logParams)\n\n\treturn r\n}\n\nfunc (app *application) foobar(w http.ResponseWriter, r *http.Request) {\n\tfmt.Fprintln(w, \"Hello world\")\n}\n\n// Middleware\n\nfunc (app *application) logRequest(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tapp.infoLog.Printf(\"%s - %s\", r.Method, r.URL.RequestURI())\n\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc (app *application) logParams(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tlp := logparams.LogParams{Request: r}\n\t\tlp.ToLogger(app.infoLog)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n```\n\n```sh\n\u003e go run main.go\nINFO\t2020/03/22 11:14:49 Starting server on :8080\nINFO\t2020/03/22 11:14:51 POST - /foobar\nINFO\t2020/03/22 11:15:18 Parameters: {\"foo\" =\u003e \"bar\"}\n```\n\n## Optional Values\n- `ShowEmpty (bool)` will return an empty string, or not print to logger, if there are no parameters. Default is to false if struct arg is not passed.\n\n- `ShowPassword (bool)` will show the `password` and `password_confirmation` parameters. Default is false if not explicitly passed(DO NOT RECOMMEND).\n\n- `HidePrefix (bool)` will hide the `Parameters: ` prefix in the output. Default is to false if struct arg is not passed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faaronvb%2Flogparams","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faaronvb%2Flogparams","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faaronvb%2Flogparams/lists"}