diff --git a/modules/userlog/userlog.go b/modules/userlog/userlog.go new file mode 100644 index 000000000..983df7647 --- /dev/null +++ b/modules/userlog/userlog.go @@ -0,0 +1,13 @@ +// package userlog + +// import ( +// "fmt" +// "path" +// "code.gitea.io/gitea/modules/log" +// "code.gitea.io/gitea/modules/setting" +// ) + +// func init(){ +// filename := path.Join(setting.LogRootPath, "userlog.log") +// log.NewLogger(1000, "userlog", "file", fmt.Sprintf(`{"filename":"%s"}`, filename)) +// } \ No newline at end of file diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 3f4dbef6e..5436849e2 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -82,6 +82,7 @@ import ( "code.gitea.io/gitea/routers/api/v1/settings" _ "code.gitea.io/gitea/routers/api/v1/swagger" // for swagger generation "code.gitea.io/gitea/routers/api/v1/user" + "code.gitea.io/gitea/routers/api/v1/trace" "gitea.com/macaron/binding" "gitea.com/macaron/macaron" @@ -970,6 +971,12 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/topics", func() { m.Get("/search", repo.TopicSearch) }) + + m.Group("/log", func() { + m.Get("/list", trace.GetLogList) + m.Get("/download/:filename", trace.DownloadLog) + // m.Combo("/download").Post(bind(trace.LogDownloadOptions{}), trace.DownloadLog) + }) }, securityHeaders(), context.APIContexter(), sudo()) } diff --git a/routers/api/v1/trace/trace.go b/routers/api/v1/trace/trace.go new file mode 100644 index 000000000..3c5ee2171 --- /dev/null +++ b/routers/api/v1/trace/trace.go @@ -0,0 +1,62 @@ +package trace + +import ( + // "fmt" + "os" + // "path/filepath" + "io/ioutil" + // "net/http" + + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/context" +) + +type LogDownloadOptions struct { + FileName string `json:"filename" binding:"Required"` +} + +func GetLogList(ctx *context.APIContext) { + var logList []string + + dir_list, err := ioutil.ReadDir(setting.LogRootPath) + if err != nil { + ctx.ServerError("logList", err) + return + } + + for i:=0; i