new logging
This commit is contained in:
parent
27f0897faa
commit
cb14485388
46
conf/wide.go
46
conf/wide.go
|
@ -29,8 +29,8 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/b3log/wide/event"
|
||||
"github.com/b3log/wide/log"
|
||||
"github.com/b3log/wide/util"
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -93,6 +93,7 @@ type conf struct {
|
|||
Context string // server context
|
||||
Server string // server host and port ({IP}:{Port})
|
||||
StaticServer string // static resources server scheme, host and port (http://{IP}:{Port})
|
||||
LogLevel string // logging level
|
||||
Channel string // channel (ws://{IP}:{Port})
|
||||
HTTPSessionMaxAge int // HTTP session max age (in seciond)
|
||||
StaticResourceVersion string // version of static resources
|
||||
|
@ -111,6 +112,9 @@ var Wide conf
|
|||
// Save function will use this variable to persist.
|
||||
var rawWide conf
|
||||
|
||||
// Logger.
|
||||
var logger = log.NewLogger(os.Stdout)
|
||||
|
||||
// FixedTimeCheckEnv checks Wide runtime enviorment periodically (7 minutes).
|
||||
//
|
||||
// Exits process if found fatal issues (such as not found $GOPATH),
|
||||
|
@ -129,14 +133,14 @@ func checkEnv() {
|
|||
cmd := exec.Command("go", "version")
|
||||
buf, err := cmd.CombinedOutput()
|
||||
if nil != err {
|
||||
glog.Fatal("Not found 'go' command, please make sure Go has been installed correctly")
|
||||
logger.Error("Not found 'go' command, please make sure Go has been installed correctly")
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
glog.V(5).Info(string(buf))
|
||||
logger.Debug(string(buf))
|
||||
|
||||
if "" == os.Getenv("GOPATH") {
|
||||
glog.Fatal("Not found $GOPATH, please configure it before running Wide")
|
||||
logger.Error("Not found $GOPATH, please configure it before running Wide")
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
@ -147,7 +151,7 @@ func checkEnv() {
|
|||
if nil != err {
|
||||
event.EventQueue <- &event.Event{Code: event.EvtCodeGocodeNotFound}
|
||||
|
||||
glog.Warningf("Not found gocode [%s]", gocode)
|
||||
logger.Warnf("Not found gocode [%s]", gocode)
|
||||
}
|
||||
|
||||
ideStub := util.Go.GetExecutableInGOBIN("ide_stub")
|
||||
|
@ -156,7 +160,7 @@ func checkEnv() {
|
|||
if nil != err {
|
||||
event.EventQueue <- &event.Event{Code: event.EvtCodeIDEStubNotFound}
|
||||
|
||||
glog.Warningf("Not found ide_stub [%s]", ideStub)
|
||||
logger.Warnf("Not found ide_stub [%s]", ideStub)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -192,7 +196,7 @@ func (c *conf) GetGoFmt(username string) string {
|
|||
case "goimports":
|
||||
return util.Go.GetExecutableInGOBIN("goimports")
|
||||
default:
|
||||
glog.Errorf("Unsupported Go Format tool [%s]", user.GoFormat)
|
||||
logger.Errorf("Unsupported Go Format tool [%s]", user.GoFormat)
|
||||
return "gofmt"
|
||||
}
|
||||
}
|
||||
|
@ -234,13 +238,13 @@ func Save() bool {
|
|||
bytes, err := json.MarshalIndent(rawWide, "", " ")
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
if err = ioutil.WriteFile("conf/wide.json", bytes, 0644); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
return false
|
||||
}
|
||||
|
@ -254,29 +258,31 @@ func Load(confPath, confIP, confPort, confServer, confStaticServer, confContext,
|
|||
|
||||
err := json.Unmarshal(bytes, &Wide)
|
||||
if err != nil {
|
||||
glog.Error("Parses wide.json error: ", err)
|
||||
logger.Error("Parses wide.json error: ", err)
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
||||
log.SetLevel(Wide.LogLevel)
|
||||
|
||||
// keep the raw content
|
||||
json.Unmarshal(bytes, &rawWide)
|
||||
|
||||
glog.V(5).Info("Conf: \n" + string(bytes))
|
||||
logger.Debug("Conf: \n" + string(bytes))
|
||||
|
||||
// Working Driectory
|
||||
Wide.WD = util.OS.Pwd()
|
||||
glog.V(5).Infof("${pwd} [%s]", Wide.WD)
|
||||
logger.Debugf("${pwd} [%s]", Wide.WD)
|
||||
|
||||
// IP
|
||||
ip, err := util.Net.LocalIP()
|
||||
if err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
||||
glog.V(5).Infof("${ip} [%s]", ip)
|
||||
logger.Debugf("${ip} [%s]", ip)
|
||||
|
||||
if confDocker {
|
||||
// TODO: may be we need to do something here
|
||||
|
@ -374,7 +380,7 @@ func UpdateCustomizedConf(username string) {
|
|||
|
||||
t, err := template.ParseFiles("static/user/style.css.tmpl")
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
@ -382,14 +388,14 @@ func UpdateCustomizedConf(username string) {
|
|||
wd := util.OS.Pwd()
|
||||
dir := filepath.Clean(wd + "/static/user/" + u.Name)
|
||||
if err := os.MkdirAll(dir, 0755); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
||||
fout, err := os.Create(dir + PathSeparator + "style.css")
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
@ -397,7 +403,7 @@ func UpdateCustomizedConf(username string) {
|
|||
defer fout.Close()
|
||||
|
||||
if err := t.Execute(fout, model); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
@ -435,12 +441,10 @@ func CreateWorkspaceDir(path string) {
|
|||
func createDir(path string) {
|
||||
if !util.File.IsExist(path) {
|
||||
if err := os.MkdirAll(path, 0775); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
||||
glog.V(7).Infof("Created a directory [%s]", path)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
"Context": "",
|
||||
"Server": "{IP}:{Port}",
|
||||
"StaticServer": "",
|
||||
"LogLevel": "info",
|
||||
"Channel": "ws://{IP}:{Port}",
|
||||
"HTTPSessionMaxAge": 86400,
|
||||
"StaticResourceVersion": "${time}",
|
||||
|
|
|
@ -29,12 +29,15 @@ import (
|
|||
|
||||
"github.com/b3log/wide/conf"
|
||||
"github.com/b3log/wide/file"
|
||||
"github.com/b3log/wide/log"
|
||||
"github.com/b3log/wide/session"
|
||||
"github.com/b3log/wide/util"
|
||||
"github.com/golang/glog"
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
|
||||
// Logger.
|
||||
var logger = log.NewLogger(os.Stdout)
|
||||
|
||||
// WSHandler handles request of creating editor channel.
|
||||
// XXX: NOT used at present
|
||||
func WSHandler(w http.ResponseWriter, r *http.Request) {
|
||||
|
@ -58,7 +61,7 @@ func WSHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
session.EditorWS[sid] = &editorChan
|
||||
|
||||
glog.Infof("Open a new [Editor] with session [%s], %d", sid, len(session.EditorWS))
|
||||
logger.Infof("Open a new [Editor] with session [%s], %d", sid, len(session.EditorWS))
|
||||
|
||||
args := map[string]interface{}{}
|
||||
for {
|
||||
|
@ -72,7 +75,7 @@ func WSHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
offset := getCursorOffset(code, line, ch)
|
||||
|
||||
// glog.Infof("offset: %d", offset)
|
||||
// logger.Infof("offset: %d", offset)
|
||||
|
||||
gocode := util.Go.GetExecutableInGOBIN("gocode")
|
||||
argv := []string{"-f=json", "autocomplete", strconv.Itoa(offset)}
|
||||
|
@ -91,7 +94,7 @@ func WSHandler(w http.ResponseWriter, r *http.Request) {
|
|||
ret = map[string]interface{}{"output": string(output.Bytes()), "cmd": "autocomplete"}
|
||||
|
||||
if err := session.EditorWS[sid].WriteJSON(&ret); err != nil {
|
||||
glog.Error("Editor WS ERROR: " + err.Error())
|
||||
logger.Error("Editor WS ERROR: " + err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -102,7 +105,7 @@ func AutocompleteHandler(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -121,7 +124,7 @@ func AutocompleteHandler(w http.ResponseWriter, r *http.Request) {
|
|||
fout, err := os.Create(path)
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -131,7 +134,7 @@ func AutocompleteHandler(w http.ResponseWriter, r *http.Request) {
|
|||
fout.WriteString(code)
|
||||
|
||||
if err := fout.Close(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -142,7 +145,7 @@ func AutocompleteHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
offset := getCursorOffset(code, line, ch)
|
||||
|
||||
// glog.Infof("offset: %d", offset)
|
||||
// logger.Infof("offset: %d", offset)
|
||||
|
||||
userWorkspace := conf.Wide.GetUserWorkspace(username)
|
||||
workspaces := filepath.SplitList(userWorkspace)
|
||||
|
@ -153,7 +156,7 @@ func AutocompleteHandler(w http.ResponseWriter, r *http.Request) {
|
|||
libPath += userLib + conf.PathListSeparator
|
||||
}
|
||||
|
||||
glog.V(5).Infof("gocode set lib-path %s", libPath)
|
||||
logger.Debugf("gocode set lib-path [%s]", libPath)
|
||||
|
||||
// FIXME: using gocode set lib-path has some issues while accrossing workspaces
|
||||
gocode := util.Go.GetExecutableInGOBIN("gocode")
|
||||
|
@ -169,7 +172,7 @@ func AutocompleteHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
output, err := cmd.CombinedOutput()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -189,7 +192,7 @@ func GetExprInfoHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
var args map[string]interface{}
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -202,7 +205,7 @@ func GetExprInfoHandler(w http.ResponseWriter, r *http.Request) {
|
|||
fout, err := os.Create(path)
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -212,7 +215,7 @@ func GetExprInfoHandler(w http.ResponseWriter, r *http.Request) {
|
|||
fout.WriteString(code)
|
||||
|
||||
if err := fout.Close(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -223,7 +226,7 @@ func GetExprInfoHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
offset := getCursorOffset(code, line, ch)
|
||||
|
||||
// glog.Infof("offset [%d]", offset)
|
||||
// logger.Infof("offset [%d]", offset)
|
||||
|
||||
ideStub := util.Go.GetExecutableInGOBIN("ide_stub")
|
||||
argv := []string{"type", "-cursor", filename + ":" + strconv.Itoa(offset), "-info", "."}
|
||||
|
@ -234,7 +237,7 @@ func GetExprInfoHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
output, err := cmd.CombinedOutput()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -265,7 +268,7 @@ func FindDeclarationHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
var args map[string]interface{}
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -278,7 +281,7 @@ func FindDeclarationHandler(w http.ResponseWriter, r *http.Request) {
|
|||
fout, err := os.Create(path)
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -288,7 +291,7 @@ func FindDeclarationHandler(w http.ResponseWriter, r *http.Request) {
|
|||
fout.WriteString(code)
|
||||
|
||||
if err := fout.Close(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -299,7 +302,7 @@ func FindDeclarationHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
offset := getCursorOffset(code, line, ch)
|
||||
|
||||
// glog.Infof("offset [%d]", offset)
|
||||
// logger.Infof("offset [%d]", offset)
|
||||
|
||||
ideStub := util.Go.GetExecutableInGOBIN("ide_stub")
|
||||
argv := []string{"type", "-cursor", filename + ":" + strconv.Itoa(offset), "-def", "."}
|
||||
|
@ -310,7 +313,7 @@ func FindDeclarationHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
output, err := cmd.CombinedOutput()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -350,7 +353,7 @@ func FindUsagesHandler(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -363,7 +366,7 @@ func FindUsagesHandler(w http.ResponseWriter, r *http.Request) {
|
|||
fout, err := os.Create(filePath)
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -373,7 +376,7 @@ func FindUsagesHandler(w http.ResponseWriter, r *http.Request) {
|
|||
fout.WriteString(code)
|
||||
|
||||
if err := fout.Close(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -383,7 +386,7 @@ func FindUsagesHandler(w http.ResponseWriter, r *http.Request) {
|
|||
ch := int(args["cursorCh"].(float64))
|
||||
|
||||
offset := getCursorOffset(code, line, ch)
|
||||
// glog.Infof("offset [%d]", offset)
|
||||
// logger.Infof("offset [%d]", offset)
|
||||
|
||||
ideStub := util.Go.GetExecutableInGOBIN("ide_stub")
|
||||
argv := []string{"type", "-cursor", filename + ":" + strconv.Itoa(offset), "-use", "."}
|
||||
|
@ -394,7 +397,7 @@ func FindUsagesHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
output, err := cmd.CombinedOutput()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
|
|
@ -23,7 +23,6 @@ import (
|
|||
"github.com/b3log/wide/conf"
|
||||
"github.com/b3log/wide/session"
|
||||
"github.com/b3log/wide/util"
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
// GoFmtHandler handles request of formatting Go source code.
|
||||
|
@ -46,7 +45,7 @@ func GoFmtHandler(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -62,7 +61,7 @@ func GoFmtHandler(w http.ResponseWriter, r *http.Request) {
|
|||
fout, err := os.Create(filePath)
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -72,7 +71,7 @@ func GoFmtHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
fout.WriteString(code)
|
||||
if err := fout.Close(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -99,7 +98,7 @@ func GoFmtHandler(w http.ResponseWriter, r *http.Request) {
|
|||
fout, err = os.Create(filePath)
|
||||
fout.WriteString(code)
|
||||
if err := fout.Close(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
|
|
@ -15,7 +15,11 @@
|
|||
// Package event includes event related manipulations.
|
||||
package event
|
||||
|
||||
import "github.com/golang/glog"
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/b3log/wide/log"
|
||||
)
|
||||
|
||||
const (
|
||||
// EvtCodeGOPATHNotFound indicates an event: not found $GOPATH env variable
|
||||
|
@ -33,6 +37,9 @@ const (
|
|||
// Max length of queue.
|
||||
const maxQueueLength = 10
|
||||
|
||||
// Logger.
|
||||
var logger = log.NewLogger(os.Stdout)
|
||||
|
||||
// Event represents an event.
|
||||
type Event struct {
|
||||
Code int `json:"code"` // event code
|
||||
|
@ -63,7 +70,7 @@ var UserEventQueues = queues{}
|
|||
func Load() {
|
||||
go func() {
|
||||
for event := range EventQueue {
|
||||
glog.V(5).Infof("Received a global event [code=%d]", event.Code)
|
||||
logger.Debugf("Received a global event [code=%d]", event.Code)
|
||||
|
||||
// dispatch the event to each user event queue
|
||||
for _, userQueue := range UserEventQueues {
|
||||
|
@ -86,7 +93,7 @@ func (uq *UserEventQueue) AddHandler(handlers ...Handler) {
|
|||
func (ueqs queues) New(sid string) *UserEventQueue {
|
||||
q := ueqs[sid]
|
||||
if nil != q {
|
||||
glog.Warningf("Already exist a user queue in session [%s]", sid)
|
||||
logger.Warnf("Already exist a user queue in session [%s]", sid)
|
||||
|
||||
return q
|
||||
}
|
||||
|
@ -100,7 +107,7 @@ func (ueqs queues) New(sid string) *UserEventQueue {
|
|||
|
||||
go func() { // start listening
|
||||
for evt := range q.Queue {
|
||||
glog.V(5).Infof("Session [%s] received an event [%d]", sid, evt.Code)
|
||||
logger.Debugf("Session [%s] received an event [%d]", sid, evt.Code)
|
||||
|
||||
// process event by each handlers
|
||||
for _, handler := range q.Handlers {
|
||||
|
|
|
@ -21,7 +21,6 @@ import (
|
|||
"path/filepath"
|
||||
|
||||
"github.com/b3log/wide/util"
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
// GetZip handles request of retrieving zip file.
|
||||
|
@ -57,7 +56,7 @@ func CreateZip(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
var args map[string]interface{}
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -75,7 +74,7 @@ func CreateZip(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
zipFile, err := util.Zip.Create(path + ".zip")
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
|
|
@ -26,11 +26,14 @@ import (
|
|||
|
||||
"github.com/b3log/wide/conf"
|
||||
"github.com/b3log/wide/event"
|
||||
"github.com/b3log/wide/log"
|
||||
"github.com/b3log/wide/session"
|
||||
"github.com/b3log/wide/util"
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
// Logger.
|
||||
var logger = log.NewLogger(os.Stdout)
|
||||
|
||||
// Node represents a file node in file tree.
|
||||
type Node struct {
|
||||
Name string `json:"name"`
|
||||
|
@ -120,7 +123,7 @@ func RefreshDirectory(w http.ResponseWriter, r *http.Request) {
|
|||
w.Header().Set("Content-Type", "application/json")
|
||||
data, err := json.Marshal(node.Children)
|
||||
if err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -135,7 +138,7 @@ func GetFile(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -162,7 +165,7 @@ func GetFile(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
user := GetUsre(path)
|
||||
if nil == user {
|
||||
glog.Warningf("The path [%s] has no owner")
|
||||
logger.Warnf("The path [%s] has no owner")
|
||||
data["path"] = ""
|
||||
|
||||
return
|
||||
|
@ -193,7 +196,7 @@ func SaveFile(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -205,7 +208,7 @@ func SaveFile(w http.ResponseWriter, r *http.Request) {
|
|||
fout, err := os.Create(filePath)
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -216,7 +219,7 @@ func SaveFile(w http.ResponseWriter, r *http.Request) {
|
|||
fout.WriteString(code)
|
||||
|
||||
if err := fout.Close(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
wSession := session.WideSessions.Get(sid)
|
||||
|
@ -235,7 +238,7 @@ func NewFile(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -270,7 +273,7 @@ func RemoveFile(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -297,7 +300,7 @@ func RenameFile(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -336,7 +339,7 @@ func Find(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
var args map[string]interface{}
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -385,7 +388,7 @@ func SearchText(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -429,7 +432,7 @@ func walk(path string, node *Node, creatable, removable bool) {
|
|||
node.Children = append(node.Children, &child)
|
||||
|
||||
if nil == fio {
|
||||
glog.Warningf("Path [%s] is nil", fpath)
|
||||
logger.Warnf("Path [%s] is nil", fpath)
|
||||
|
||||
continue
|
||||
}
|
||||
|
@ -471,7 +474,7 @@ func listFiles(dirname string) []string {
|
|||
fio, err := os.Lstat(path)
|
||||
|
||||
if nil != err {
|
||||
glog.Warningf("Can't read file info [%s]", path)
|
||||
logger.Warnf("Can't read file info [%s]", path)
|
||||
|
||||
continue
|
||||
}
|
||||
|
@ -562,30 +565,30 @@ func createFile(path, fileType string) bool {
|
|||
case "f":
|
||||
file, err := os.OpenFile(path, os.O_CREATE, 0775)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
defer file.Close()
|
||||
|
||||
glog.V(5).Infof("Created file [%s]", path)
|
||||
logger.Debugf("Created file [%s]", path)
|
||||
|
||||
return true
|
||||
case "d":
|
||||
err := os.Mkdir(path, 0775)
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
glog.V(5).Infof("Created directory [%s]", path)
|
||||
logger.Debugf("Created directory [%s]", path)
|
||||
|
||||
return true
|
||||
default:
|
||||
glog.Errorf("Unsupported file type [%s]", fileType)
|
||||
logger.Errorf("Unsupported file type [%s]", fileType)
|
||||
|
||||
return false
|
||||
}
|
||||
|
@ -594,12 +597,12 @@ func createFile(path, fileType string) bool {
|
|||
// removeFile removes file on the specified path.
|
||||
func removeFile(path string) bool {
|
||||
if err := os.RemoveAll(path); nil != err {
|
||||
glog.Errorf("Removes [%s] failed: [%s]", path, err.Error())
|
||||
logger.Errorf("Removes [%s] failed: [%s]", path, err.Error())
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
glog.V(5).Infof("Removed [%s]", path)
|
||||
logger.Debugf("Removed [%s]", path)
|
||||
|
||||
return true
|
||||
}
|
||||
|
@ -607,12 +610,12 @@ func removeFile(path string) bool {
|
|||
// renameFile renames (moves) a file from the specified old path to the specified new path.
|
||||
func renameFile(oldPath, newPath string) bool {
|
||||
if err := os.Rename(oldPath, newPath); nil != err {
|
||||
glog.Errorf("Renames [%s] failed: [%s]", oldPath, err.Error())
|
||||
logger.Errorf("Renames [%s] failed: [%s]", oldPath, err.Error())
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
glog.V(5).Infof("Renamed [%s] to [%s]", oldPath, newPath)
|
||||
logger.Debugf("Renamed [%s] to [%s]", oldPath, newPath)
|
||||
|
||||
return true
|
||||
}
|
||||
|
@ -632,7 +635,7 @@ func find(dir, name string, results []*string) []*string {
|
|||
f.Close()
|
||||
|
||||
if nil != err {
|
||||
glog.Errorf("Read dir [%s] failed: [%s]", dir, err.Error())
|
||||
logger.Errorf("Read dir [%s] failed: [%s]", dir, err.Error())
|
||||
|
||||
return results
|
||||
}
|
||||
|
@ -655,7 +658,7 @@ func find(dir, name string, results []*string) []*string {
|
|||
match, err := filepath.Match(strings.ToLower(pattern), strings.ToLower(path))
|
||||
|
||||
if nil != err {
|
||||
glog.Errorf("Find match filename failed: [%s]", err.Error)
|
||||
logger.Errorf("Find match filename failed: [%s]", err.Error)
|
||||
|
||||
continue
|
||||
}
|
||||
|
@ -681,7 +684,7 @@ func search(dir, extension, text string, snippets []*Snippet) []*Snippet {
|
|||
f.Close()
|
||||
|
||||
if nil != err {
|
||||
glog.Errorf("Read dir [%s] failed: [%s]", dir, err.Error())
|
||||
logger.Errorf("Read dir [%s] failed: [%s]", dir, err.Error())
|
||||
|
||||
return snippets
|
||||
}
|
||||
|
@ -709,7 +712,7 @@ func searchInFile(path string, text string) []*Snippet {
|
|||
|
||||
bytes, err := ioutil.ReadFile(path)
|
||||
if nil != err {
|
||||
glog.Errorf("Read file [%s] failed: [%s]", path, err.Error())
|
||||
logger.Errorf("Read file [%s] failed: [%s]", path, err.Error())
|
||||
|
||||
return ret
|
||||
}
|
||||
|
|
|
@ -22,9 +22,12 @@ import (
|
|||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"github.com/b3log/wide/log"
|
||||
)
|
||||
|
||||
// Logger.
|
||||
var logger = log.NewLogger(os.Stdout)
|
||||
|
||||
// Locale.
|
||||
type locale struct {
|
||||
Name string
|
||||
|
@ -54,7 +57,7 @@ func Load() {
|
|||
func load(localeStr string) {
|
||||
bytes, err := ioutil.ReadFile("i18n/" + localeStr + ".json")
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
@ -63,14 +66,14 @@ func load(localeStr string) {
|
|||
|
||||
err = json.Unmarshal(bytes, &l.Langs)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
||||
Locales[localeStr] = l
|
||||
|
||||
glog.V(5).Infof("Loaded [%s] locale configuration", localeStr)
|
||||
logger.Debugf("Loaded [%s] locale configuration", localeStr)
|
||||
}
|
||||
|
||||
// Get gets message with the specified locale and key.
|
||||
|
|
57
log/logs.go
57
log/logs.go
|
@ -14,7 +14,8 @@
|
|||
|
||||
// Package log includes logging related manipulations.
|
||||
//
|
||||
// logger := log.NewLogger(os.Stdout, log.Debug)
|
||||
// log.Level = log.Debug
|
||||
// logger := log.NewLogger(os.Stdout)
|
||||
//
|
||||
// logger.Debug("debug message")
|
||||
// logger.Info("info message")
|
||||
|
@ -28,6 +29,7 @@ import (
|
|||
"fmt"
|
||||
"io"
|
||||
stdlog "log"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Logging level.
|
||||
|
@ -38,20 +40,65 @@ const (
|
|||
Error
|
||||
)
|
||||
|
||||
// Logger is a simple logger with level.
|
||||
// The underlying logger is the Go standard logging "log".
|
||||
// all loggers.
|
||||
var loggers []*Logger
|
||||
|
||||
// the global default logging level, it will be used for creating logger.
|
||||
var logLevel = Debug
|
||||
|
||||
// Logger represents a simple logger with level.
|
||||
// The underlying logger is the standard Go logging "log".
|
||||
type Logger struct {
|
||||
level int
|
||||
logger *stdlog.Logger
|
||||
}
|
||||
|
||||
// NewLogger creates a logger.
|
||||
func NewLogger(out io.Writer, level int) *Logger {
|
||||
ret := &Logger{level: level, logger: stdlog.New(out, "", stdlog.Ldate|stdlog.Ltime|stdlog.Lshortfile)}
|
||||
func NewLogger(out io.Writer) *Logger {
|
||||
ret := &Logger{level: logLevel, logger: stdlog.New(out, "", stdlog.Ldate|stdlog.Ltime|stdlog.Lshortfile)}
|
||||
|
||||
loggers = append(loggers, ret)
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
// SetLevel sets the logging level of all loggers.
|
||||
func SetLevel(level string) {
|
||||
logLevel = getLevel(level)
|
||||
|
||||
for _, l := range loggers {
|
||||
l.SetLevel(level)
|
||||
}
|
||||
}
|
||||
|
||||
// getLevel gets logging level int value corresponding to the specified level.
|
||||
func getLevel(level string) int {
|
||||
level = strings.ToLower(level)
|
||||
|
||||
switch level {
|
||||
case "debug":
|
||||
return Debug
|
||||
case "info":
|
||||
return Info
|
||||
case "warn":
|
||||
return Warn
|
||||
case "error":
|
||||
return Error
|
||||
default:
|
||||
return Info
|
||||
}
|
||||
}
|
||||
|
||||
// SetLevel sets the logging level of a logger.
|
||||
func (l *Logger) SetLevel(level string) {
|
||||
l.level = getLevel(level)
|
||||
}
|
||||
|
||||
// IsDebugEnabled determines whether the debug level is enabled.
|
||||
func (l *Logger) IsDebugEnabled() bool {
|
||||
return l.level <= Debug
|
||||
}
|
||||
|
||||
// Debug prints debug level message.
|
||||
func (l *Logger) Debug(v ...interface{}) {
|
||||
if Debug < l.level {
|
||||
|
|
37
main.go
37
main.go
|
@ -33,14 +33,17 @@ import (
|
|||
"github.com/b3log/wide/event"
|
||||
"github.com/b3log/wide/file"
|
||||
"github.com/b3log/wide/i18n"
|
||||
"github.com/b3log/wide/log"
|
||||
"github.com/b3log/wide/notification"
|
||||
"github.com/b3log/wide/output"
|
||||
"github.com/b3log/wide/session"
|
||||
"github.com/b3log/wide/shell"
|
||||
"github.com/b3log/wide/util"
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
// Logger
|
||||
var logger *log.Logger
|
||||
|
||||
// The only one init function in Wide.
|
||||
func init() {
|
||||
confPath := flag.String("conf", "conf/wide.json", "path of wide.json")
|
||||
|
@ -52,16 +55,16 @@ func init() {
|
|||
confChannel := flag.String("channel", "", "this will overwrite Wide.XXXChannel if specified")
|
||||
confStat := flag.Bool("stat", false, "whether report statistics periodically")
|
||||
confDocker := flag.Bool("docker", false, "whether run in a docker container")
|
||||
|
||||
flag.Set("alsologtostderr", "true")
|
||||
flag.Set("stderrthreshold", "INFO")
|
||||
flag.Set("v", "3")
|
||||
// confLogLevel := flag.String("log_level", "info", "logging level: debug/info/warn/error")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
log.SetLevel("warn")
|
||||
logger = log.NewLogger(os.Stdout)
|
||||
|
||||
wd := util.OS.Pwd()
|
||||
if strings.HasPrefix(wd, os.TempDir()) {
|
||||
glog.Error("Don't run wide in OS' temp directory or with `go run`")
|
||||
logger.Error("Don't run wide in OS' temp directory or with `go run`")
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
@ -105,7 +108,7 @@ func indexHandler(w http.ResponseWriter, r *http.Request) {
|
|||
username := httpSession.Values["username"].(string)
|
||||
user := conf.Wide.GetUser(username)
|
||||
if nil == user {
|
||||
glog.Warningf("Not found user [%s]", username)
|
||||
logger.Warnf("Not found user [%s]", username)
|
||||
|
||||
http.Redirect(w, r, conf.Wide.Context+"login", http.StatusFound)
|
||||
|
||||
|
@ -121,12 +124,12 @@ func indexHandler(w http.ResponseWriter, r *http.Request) {
|
|||
"pathSeparator": conf.PathSeparator, "codeMirrorVer": conf.CodeMirrorVer,
|
||||
"user": user, "editorThemes": conf.GetEditorThemes()}
|
||||
|
||||
glog.V(3).Infof("User [%s] has [%d] sessions", username, len(wideSessions))
|
||||
logger.Debugf("User [%s] has [%d] sessions", username, len(wideSessions))
|
||||
|
||||
t, err := template.ParseFiles("views/index.html")
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -164,7 +167,7 @@ func startHandler(w http.ResponseWriter, r *http.Request) {
|
|||
sid := r.URL.Query()["sid"][0]
|
||||
wSession := session.WideSessions.Get(sid)
|
||||
if nil == wSession {
|
||||
glog.Errorf("Session [%s] not found", sid)
|
||||
logger.Errorf("Session [%s] not found", sid)
|
||||
}
|
||||
|
||||
model := map[string]interface{}{"conf": conf.Wide, "i18n": i18n.GetAll(locale), "locale": locale,
|
||||
|
@ -173,7 +176,7 @@ func startHandler(w http.ResponseWriter, r *http.Request) {
|
|||
t, err := template.ParseFiles("views/start.html")
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -205,7 +208,7 @@ func keyboardShortcutsHandler(w http.ResponseWriter, r *http.Request) {
|
|||
t, err := template.ParseFiles("views/keyboard_shortcuts.html")
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -238,7 +241,7 @@ func aboutHandler(w http.ResponseWriter, r *http.Request) {
|
|||
t, err := template.ParseFiles("views/about.html")
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -253,8 +256,6 @@ func main() {
|
|||
|
||||
initMime()
|
||||
|
||||
defer glog.Flush()
|
||||
|
||||
// IDE
|
||||
http.HandleFunc(conf.Wide.Context+"/", handlerGzWrapper(indexHandler))
|
||||
http.HandleFunc(conf.Wide.Context+"/start", handlerWrapper(startHandler))
|
||||
|
@ -321,11 +322,11 @@ func main() {
|
|||
http.HandleFunc(conf.Wide.Context+"/signup", handlerWrapper(session.SignUpUser))
|
||||
http.HandleFunc(conf.Wide.Context+"/preference", handlerWrapper(session.PreferenceHandler))
|
||||
|
||||
glog.Infof("Wide is running [%s]", conf.Wide.Server+conf.Wide.Context)
|
||||
logger.Infof("Wide is running [%s]", conf.Wide.Server+conf.Wide.Context)
|
||||
|
||||
err := http.ListenAndServe(conf.Wide.Server, nil)
|
||||
if err != nil {
|
||||
glog.Fatal(err)
|
||||
logger.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -390,7 +391,7 @@ func stopwatch(handler func(w http.ResponseWriter, r *http.Request)) func(w http
|
|||
start := time.Now()
|
||||
|
||||
defer func() {
|
||||
glog.V(5).Infof("[%s] [%s]", r.RequestURI, time.Since(start))
|
||||
logger.Debugf("[%s] [%s]", r.RequestURI, time.Since(start))
|
||||
}()
|
||||
|
||||
handler(w, r)
|
||||
|
|
|
@ -17,15 +17,16 @@ package notification
|
|||
|
||||
import (
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/b3log/wide/conf"
|
||||
"github.com/b3log/wide/event"
|
||||
"github.com/b3log/wide/i18n"
|
||||
"github.com/b3log/wide/log"
|
||||
"github.com/b3log/wide/session"
|
||||
"github.com/b3log/wide/util"
|
||||
"github.com/golang/glog"
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
|
||||
|
@ -38,6 +39,9 @@ const (
|
|||
server = "Server" // notification.type: server
|
||||
)
|
||||
|
||||
// Logger.
|
||||
var logger = log.NewLogger(os.Stdout)
|
||||
|
||||
// Notification represents a notification.
|
||||
type Notification struct {
|
||||
event *event.Event
|
||||
|
@ -74,7 +78,7 @@ func event2Notification(e *event.Event) {
|
|||
notification = &Notification{event: e, Type: server, Severity: error,
|
||||
Message: i18n.Get(locale, "notification_"+strconv.Itoa(e.Code)).(string) + " [" + e.Data.(string) + "]"}
|
||||
default:
|
||||
glog.Warningf("Can't handle event[code=%d]", e.Code)
|
||||
logger.Warnf("Can't handle event[code=%d]", e.Code)
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -105,7 +109,7 @@ func WSHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
session.NotificationWS[sid] = &wsChan
|
||||
|
||||
glog.V(4).Infof("Open a new [Notification] with session [%s], %d", sid, len(session.NotificationWS))
|
||||
logger.Debugf("Open a new [Notification] with session [%s], %d", sid, len(session.NotificationWS))
|
||||
|
||||
// add user event handler
|
||||
wSession.EventQueue.AddHandler(event.HandleFunc(event2Notification))
|
||||
|
|
|
@ -32,9 +32,9 @@ import (
|
|||
|
||||
"github.com/b3log/wide/conf"
|
||||
"github.com/b3log/wide/i18n"
|
||||
"github.com/b3log/wide/log"
|
||||
"github.com/b3log/wide/session"
|
||||
"github.com/b3log/wide/util"
|
||||
"github.com/golang/glog"
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
|
||||
|
@ -43,6 +43,9 @@ const (
|
|||
lintSeverityWarn = "warning" // lint severity: warning
|
||||
)
|
||||
|
||||
// Logger.
|
||||
var logger = log.NewLogger(os.Stdout)
|
||||
|
||||
// Lint represents a code lint.
|
||||
type Lint struct {
|
||||
File string `json:"file"`
|
||||
|
@ -66,7 +69,7 @@ func WSHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
session.OutputWS[sid] = &wsChan
|
||||
|
||||
glog.V(4).Infof("Open a new [Output] with session [%s], %d", sid, len(session.OutputWS))
|
||||
logger.Debugf("Open a new [Output] with session [%s], %d", sid, len(session.OutputWS))
|
||||
}
|
||||
|
||||
// RunHandler handles request of executing a binary file.
|
||||
|
@ -77,7 +80,7 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
}
|
||||
|
||||
|
@ -95,13 +98,13 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
}
|
||||
|
||||
stderr, err := cmd.StderrPipe()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
}
|
||||
|
||||
|
@ -109,7 +112,7 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
|
|||
errReader := util.NewReader(stderr)
|
||||
|
||||
if err := cmd.Start(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
}
|
||||
|
||||
|
@ -124,7 +127,7 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -143,7 +146,7 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
|
|||
defer util.Recover()
|
||||
defer cmd.Wait()
|
||||
|
||||
glog.V(5).Infof("Session [%s] is running [id=%d, file=%s]", sid, runningId, filePath)
|
||||
logger.Debugf("Session [%s] is running [id=%d, file=%s]", sid, runningId, filePath)
|
||||
|
||||
// push once for front-end to get the 'run' state and pid
|
||||
if nil != wsChannel {
|
||||
|
@ -151,7 +154,7 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
|
|||
channelRet["output"] = ""
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -170,14 +173,14 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
|
|||
// remove the exited process from user process set
|
||||
processes.remove(wSession, cmd.Process)
|
||||
|
||||
glog.V(5).Infof("Session [%s] 's running [id=%d, file=%s] has done [stdout err]", sid, runningId, filePath)
|
||||
logger.Debugf("Session [%s] 's running [id=%d, file=%s] has done [stdout err]", sid, runningId, filePath)
|
||||
|
||||
if nil != wsChannel {
|
||||
channelRet["cmd"] = "run-done"
|
||||
channelRet["output"] = buf
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
break
|
||||
}
|
||||
|
||||
|
@ -191,7 +194,7 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
|
|||
channelRet["output"] = buf
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
break
|
||||
}
|
||||
|
||||
|
@ -216,13 +219,13 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
|
|||
// remove the exited process from user process set
|
||||
processes.remove(wSession, cmd.Process)
|
||||
|
||||
glog.V(5).Infof("Session [%s] 's running [id=%d, file=%s] has done [stderr err]", sid, runningId, filePath)
|
||||
logger.Debugf("Session [%s] 's running [id=%d, file=%s] has done [stderr err]", sid, runningId, filePath)
|
||||
|
||||
channelRet["cmd"] = "run-done"
|
||||
channelRet["output"] = "<span class='stderr'>" + buf + "</span>"
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
break
|
||||
}
|
||||
|
||||
|
@ -234,7 +237,7 @@ func RunHandler(w http.ResponseWriter, r *http.Request) {
|
|||
channelRet["output"] = "<span class='stderr'>" + buf + "</span>"
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
break
|
||||
}
|
||||
|
||||
|
@ -261,7 +264,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -275,7 +278,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
fout, err := os.Create(filePath)
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -286,7 +289,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
fout.WriteString(code)
|
||||
|
||||
if err := fout.Close(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -303,13 +306,13 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
setCmdEnv(cmd, username)
|
||||
|
||||
executable := filepath.Base(curDir) + suffix
|
||||
glog.V(5).Infof("go build for [%s]", executable)
|
||||
logger.Debugf("go build for [%s]", executable)
|
||||
|
||||
executable = filepath.Join(curDir, executable)
|
||||
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -317,7 +320,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
stderr, err := cmd.StderrPipe()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -339,7 +342,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -349,7 +352,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
reader := bufio.NewReader(io.MultiReader(stdout, stderr))
|
||||
|
||||
if err := cmd.Start(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -359,7 +362,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
defer util.Recover()
|
||||
defer cmd.Wait()
|
||||
|
||||
glog.V(5).Infof("Session [%s] is building [id=%d, dir=%s]", sid, runningId, curDir)
|
||||
logger.Debugf("Session [%s] is building [id=%d, dir=%s]", sid, runningId, curDir)
|
||||
|
||||
// read all
|
||||
buf, _ := ioutil.ReadAll(reader)
|
||||
|
@ -380,7 +383,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
out, _ := cmd.CombinedOutput()
|
||||
if len(out) > 0 {
|
||||
glog.Warning(string(out))
|
||||
logger.Warn(string(out))
|
||||
}
|
||||
}()
|
||||
} else { // build error
|
||||
|
@ -438,7 +441,7 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
lint := &Lint{
|
||||
File: filepath.Join(curDir,file),
|
||||
File: filepath.Join(curDir, file),
|
||||
LineNo: lineNo - 1,
|
||||
Severity: lintSeverityError,
|
||||
Msg: msg,
|
||||
|
@ -451,12 +454,12 @@ func BuildHandler(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
if nil != session.OutputWS[sid] {
|
||||
glog.V(5).Infof("Session [%s] 's build [id=%d, dir=%s] has done", sid, runningId, curDir)
|
||||
logger.Debugf("Session [%s] 's build [id=%d, dir=%s] has done", sid, runningId, curDir)
|
||||
|
||||
wsChannel := session.OutputWS[sid]
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
wsChannel.Refresh()
|
||||
|
@ -520,7 +523,7 @@ func GoTestHandler(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -538,7 +541,7 @@ func GoTestHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -546,7 +549,7 @@ func GoTestHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
stderr, err := cmd.StderrPipe()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -568,7 +571,7 @@ func GoTestHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -578,7 +581,7 @@ func GoTestHandler(w http.ResponseWriter, r *http.Request) {
|
|||
reader := bufio.NewReader(io.MultiReader(stdout, stderr))
|
||||
|
||||
if err := cmd.Start(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -587,7 +590,7 @@ func GoTestHandler(w http.ResponseWriter, r *http.Request) {
|
|||
go func(runningId int) {
|
||||
defer util.Recover()
|
||||
|
||||
glog.V(5).Infof("Session [%s] is running [go test] [runningId=%d]", sid, runningId)
|
||||
logger.Debugf("Session [%s] is running [go test] [runningId=%d]", sid, runningId)
|
||||
|
||||
channelRet := map[string]interface{}{}
|
||||
channelRet["cmd"] = "go test"
|
||||
|
@ -599,11 +602,11 @@ func GoTestHandler(w http.ResponseWriter, r *http.Request) {
|
|||
cmd.Wait()
|
||||
|
||||
if !cmd.ProcessState.Success() {
|
||||
glog.V(5).Infof("Session [%s] 's running [go test] [runningId=%d] has done (with error)", sid, runningId)
|
||||
logger.Debugf("Session [%s] 's running [go test] [runningId=%d] has done (with error)", sid, runningId)
|
||||
|
||||
channelRet["output"] = "<span class='test-error'>" + i18n.Get(locale, "test-error").(string) + "</span>\n" + string(buf)
|
||||
} else {
|
||||
glog.V(5).Infof("Session [%s] 's running [go test] [runningId=%d] has done", sid, runningId)
|
||||
logger.Debugf("Session [%s] 's running [go test] [runningId=%d] has done", sid, runningId)
|
||||
|
||||
channelRet["output"] = "<span class='test-succ'>" + i18n.Get(locale, "test-succ").(string) + "</span>\n" + string(buf)
|
||||
}
|
||||
|
@ -613,7 +616,7 @@ func GoTestHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
wsChannel.Refresh()
|
||||
|
@ -638,7 +641,7 @@ func GoInstallHandler(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -654,11 +657,11 @@ func GoInstallHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
setCmdEnv(cmd, username)
|
||||
|
||||
glog.V(5).Infof("go install %s", curDir)
|
||||
logger.Debugf("go install %s", curDir)
|
||||
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -666,7 +669,7 @@ func GoInstallHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
stderr, err := cmd.StderrPipe()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -688,7 +691,7 @@ func GoInstallHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -698,7 +701,7 @@ func GoInstallHandler(w http.ResponseWriter, r *http.Request) {
|
|||
reader := bufio.NewReader(io.MultiReader(stdout, stderr))
|
||||
|
||||
if err := cmd.Start(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -708,7 +711,7 @@ func GoInstallHandler(w http.ResponseWriter, r *http.Request) {
|
|||
defer util.Recover()
|
||||
defer cmd.Wait()
|
||||
|
||||
glog.V(5).Infof("Session [%s] is running [go install] [id=%d, dir=%s]", sid, runningId, curDir)
|
||||
logger.Debugf("Session [%s] is running [go install] [id=%d, dir=%s]", sid, runningId, curDir)
|
||||
|
||||
// read all
|
||||
buf, _ := ioutil.ReadAll(reader)
|
||||
|
@ -772,12 +775,12 @@ func GoInstallHandler(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
if nil != session.OutputWS[sid] {
|
||||
glog.V(5).Infof("Session [%s] 's running [go install] [id=%d, dir=%s] has done", sid, runningId, curDir)
|
||||
logger.Debugf("Session [%s] 's running [go install] [id=%d, dir=%s] has done", sid, runningId, curDir)
|
||||
|
||||
wsChannel := session.OutputWS[sid]
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
wsChannel.Refresh()
|
||||
|
@ -803,7 +806,7 @@ func GoGetHandler(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -821,7 +824,7 @@ func GoGetHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -829,7 +832,7 @@ func GoGetHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
stderr, err := cmd.StderrPipe()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -851,7 +854,7 @@ func GoGetHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -861,7 +864,7 @@ func GoGetHandler(w http.ResponseWriter, r *http.Request) {
|
|||
reader := bufio.NewReader(io.MultiReader(stdout, stderr))
|
||||
|
||||
if err := cmd.Start(); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -871,7 +874,7 @@ func GoGetHandler(w http.ResponseWriter, r *http.Request) {
|
|||
defer util.Recover()
|
||||
defer cmd.Wait()
|
||||
|
||||
glog.V(5).Infof("Session [%s] is running [go get] [runningId=%d]", sid, runningId)
|
||||
logger.Debugf("Session [%s] is running [go get] [runningId=%d]", sid, runningId)
|
||||
|
||||
channelRet := map[string]interface{}{}
|
||||
channelRet["cmd"] = "go get"
|
||||
|
@ -880,11 +883,11 @@ func GoGetHandler(w http.ResponseWriter, r *http.Request) {
|
|||
buf, _ := ioutil.ReadAll(reader)
|
||||
|
||||
if 0 != len(buf) {
|
||||
glog.V(5).Infof("Session [%s] 's running [go get] [runningId=%d] has done (with error)", sid, runningId)
|
||||
logger.Debugf("Session [%s] 's running [go get] [runningId=%d] has done (with error)", sid, runningId)
|
||||
|
||||
channelRet["output"] = "<span class='get-error'>" + i18n.Get(locale, "get-error").(string) + "</span>\n" + string(buf)
|
||||
} else {
|
||||
glog.V(5).Infof("Session [%s] 's running [go get] [runningId=%d] has done", sid, runningId)
|
||||
logger.Debugf("Session [%s] 's running [go get] [runningId=%d] has done", sid, runningId)
|
||||
|
||||
channelRet["output"] = "<span class='get-succ'>" + i18n.Get(locale, "get-succ").(string) + "</span>\n"
|
||||
|
||||
|
@ -895,7 +898,7 @@ func GoGetHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
err := wsChannel.WriteJSON(&channelRet)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
wsChannel.Refresh()
|
||||
|
@ -910,7 +913,7 @@ func StopHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
var args map[string]interface{}
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
|
|
@ -19,7 +19,6 @@ import (
|
|||
"sync"
|
||||
|
||||
"github.com/b3log/wide/session"
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
// Type of process set.
|
||||
|
@ -47,7 +46,7 @@ func (procs *procs) add(wSession *session.WideSession, proc *os.Process) {
|
|||
// bind process with wide session
|
||||
wSession.SetProcesses(userProcesses)
|
||||
|
||||
glog.V(5).Infof("Session [%s] has [%d] processes", sid, len((*procs)[sid]))
|
||||
logger.Debugf("Session [%s] has [%d] processes", sid, len((*procs)[sid]))
|
||||
}
|
||||
|
||||
// remove removes the specified process from the user process set.
|
||||
|
@ -68,7 +67,7 @@ func (procs *procs) remove(wSession *session.WideSession, proc *os.Process) {
|
|||
// bind process with wide session
|
||||
wSession.SetProcesses(newProcesses)
|
||||
|
||||
glog.V(5).Infof("Session [%s] has [%d] processes", sid, len((*procs)[sid]))
|
||||
logger.Debugf("Session [%s] has [%d] processes", sid, len((*procs)[sid]))
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -87,7 +86,7 @@ func (procs *procs) kill(wSession *session.WideSession, pid int) {
|
|||
for i, p := range userProcesses {
|
||||
if p.Pid == pid {
|
||||
if err := p.Kill(); nil != err {
|
||||
glog.Error("Kill a process [pid=%d] of session [%s] failed [error=%v]", pid, sid, err)
|
||||
logger.Error("Kill a process [pid=%d] of session [%s] failed [error=%v]", pid, sid, err)
|
||||
} else {
|
||||
var newProcesses []*os.Process
|
||||
|
||||
|
@ -97,7 +96,7 @@ func (procs *procs) kill(wSession *session.WideSession, pid int) {
|
|||
// bind process with wide session
|
||||
wSession.SetProcesses(newProcesses)
|
||||
|
||||
glog.V(5).Infof("Killed a process [pid=%d] of session [%s]", pid, sid)
|
||||
logger.Debugf("Killed a process [pid=%d] of session [%s]", pid, sid)
|
||||
}
|
||||
|
||||
return
|
||||
|
|
|
@ -33,8 +33,8 @@ import (
|
|||
|
||||
"github.com/b3log/wide/conf"
|
||||
"github.com/b3log/wide/event"
|
||||
"github.com/b3log/wide/log"
|
||||
"github.com/b3log/wide/util"
|
||||
"github.com/golang/glog"
|
||||
"github.com/gorilla/sessions"
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
|
@ -44,6 +44,9 @@ const (
|
|||
sessionStateClosed // (not used so far)
|
||||
)
|
||||
|
||||
// Logger.
|
||||
var logger = log.NewLogger(os.Stdout)
|
||||
|
||||
var (
|
||||
// SessionWS holds all session channels. <sid, *util.WSChannel>
|
||||
SessionWS = map[string]*util.WSChannel{}
|
||||
|
@ -97,7 +100,7 @@ func FixedTimeRelease() {
|
|||
|
||||
for _, s := range WideSessions {
|
||||
if s.Updated.Before(threshold) {
|
||||
glog.V(3).Infof("Removes a invalid session [%s], user [%s]", s.ID, s.Username)
|
||||
logger.Debugf("Removes a invalid session [%s], user [%s]", s.ID, s.Username)
|
||||
|
||||
WideSessions.Remove(s.ID)
|
||||
}
|
||||
|
@ -151,7 +154,7 @@ func FixedTimeReport() {
|
|||
buf.WriteString(" " + t.report() + "\n")
|
||||
}
|
||||
|
||||
glog.Info(buf.String())
|
||||
logger.Info(buf.String())
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
@ -174,7 +177,7 @@ func WSHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
wSession = WideSessions.New(httpSession, sid)
|
||||
|
||||
glog.Infof("Created a wide session [%s] for websocket reconnecting, user [%s]", sid, wSession.Username)
|
||||
logger.Infof("Created a wide session [%s] for websocket reconnecting, user [%s]", sid, wSession.Username)
|
||||
}
|
||||
|
||||
conn, _ := websocket.Upgrade(w, r, nil, 1024, 1024)
|
||||
|
@ -188,13 +191,13 @@ func WSHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
SessionWS[sid] = &wsChan
|
||||
|
||||
glog.V(4).Infof("Open a new [Session Channel] with session [%s], %d", sid, len(SessionWS))
|
||||
logger.Debugf("Open a new [Session Channel] with session [%s], %d", sid, len(SessionWS))
|
||||
|
||||
input := map[string]interface{}{}
|
||||
|
||||
for {
|
||||
if err := wsChan.ReadJSON(&input); err != nil {
|
||||
glog.V(5).Infof("[Session Channel] of session [%s] disconnected, releases all resources with it, user [%s]",
|
||||
logger.Debugf("[Session Channel] of session [%s] disconnected, releases all resources with it, user [%s]",
|
||||
sid, wSession.Username)
|
||||
|
||||
WideSessions.Remove(sid)
|
||||
|
@ -205,7 +208,7 @@ func WSHandler(w http.ResponseWriter, r *http.Request) {
|
|||
ret = map[string]interface{}{"output": "", "cmd": "session-output"}
|
||||
|
||||
if err := wsChan.WriteJSON(&ret); err != nil {
|
||||
glog.Error("Session WS ERROR: " + err.Error())
|
||||
logger.Error("Session WS ERROR: " + err.Error())
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -225,7 +228,7 @@ func SaveContent(w http.ResponseWriter, r *http.Request) {
|
|||
}{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
data["succ"] = false
|
||||
|
||||
return
|
||||
|
@ -326,9 +329,9 @@ func (sessions *wSessions) Remove(sid string) {
|
|||
// kill processes
|
||||
for _, p := range s.Processes {
|
||||
if err := p.Kill(); nil != err {
|
||||
glog.Errorf("Can't kill process [%d] of session [%s], user [%s]", p.Pid, sid, s.Username)
|
||||
logger.Errorf("Can't kill process [%d] of session [%s], user [%s]", p.Pid, sid, s.Username)
|
||||
} else {
|
||||
glog.V(3).Infof("Killed a process [%d] of session [%s], user [%s]", p.Pid, sid, s.Username)
|
||||
logger.Debugf("Killed a process [%d] of session [%s], user [%s]", p.Pid, sid, s.Username)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -355,7 +358,7 @@ func (sessions *wSessions) Remove(sid string) {
|
|||
}
|
||||
}
|
||||
|
||||
glog.V(5).Infof("Removed a session [%s] of user [%s], it has [%d] sessions currently", sid, s.Username, cnt)
|
||||
logger.Debugf("Removed a session [%s] of user [%s], it has [%d] sessions currently", sid, s.Username, cnt)
|
||||
|
||||
return
|
||||
}
|
||||
|
|
|
@ -28,7 +28,6 @@ import (
|
|||
"github.com/b3log/wide/conf"
|
||||
"github.com/b3log/wide/i18n"
|
||||
"github.com/b3log/wide/util"
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -71,7 +70,7 @@ func PreferenceHandler(w http.ResponseWriter, r *http.Request) {
|
|||
t, err := template.ParseFiles("views/preference.html")
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -106,7 +105,7 @@ func PreferenceHandler(w http.ResponseWriter, r *http.Request) {
|
|||
}{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
succ = false
|
||||
|
||||
return
|
||||
|
@ -142,7 +141,7 @@ func LoginHandler(w http.ResponseWriter, r *http.Request) {
|
|||
t, err := template.ParseFiles("views/login.html")
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -165,7 +164,7 @@ func LoginHandler(w http.ResponseWriter, r *http.Request) {
|
|||
}{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
succ = false
|
||||
|
||||
return
|
||||
|
@ -194,7 +193,7 @@ func LoginHandler(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
httpSession.Save(r, w)
|
||||
|
||||
glog.Infof("Created a HTTP session [%s] for user [%s]", httpSession.Values["id"].(string), args.Username)
|
||||
logger.Infof("Created a HTTP session [%s] for user [%s]", httpSession.Values["id"].(string), args.Username)
|
||||
}
|
||||
|
||||
// LogoutHandler handles request of user logout (exit).
|
||||
|
@ -223,7 +222,7 @@ func SignUpUser(w http.ResponseWriter, r *http.Request) {
|
|||
t, err := template.ParseFiles("views/sign_up.html")
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -243,7 +242,7 @@ func SignUpUser(w http.ResponseWriter, r *http.Request) {
|
|||
var args map[string]interface{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
succ = false
|
||||
|
||||
return
|
||||
|
@ -298,7 +297,7 @@ func addUser(username, password, email string) string {
|
|||
http.Handle("/workspace/"+username+"/",
|
||||
http.StripPrefix("/workspace/"+username+"/", http.FileServer(http.Dir(newUser.GetWorkspace()))))
|
||||
|
||||
glog.Infof("Created a user [%s]", username)
|
||||
logger.Infof("Created a user [%s]", username)
|
||||
|
||||
return userCreated
|
||||
}
|
||||
|
@ -307,14 +306,14 @@ func addUser(username, password, email string) string {
|
|||
func helloWorld(workspace string) {
|
||||
dir := workspace + conf.PathSeparator + "src" + conf.PathSeparator + "hello"
|
||||
if err := os.MkdirAll(dir, 0755); nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
fout, err := os.Create(dir + conf.PathSeparator + "main.go")
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
|
||||
os.Exit(-1)
|
||||
}
|
||||
|
|
|
@ -28,9 +28,9 @@ import (
|
|||
|
||||
"github.com/b3log/wide/conf"
|
||||
"github.com/b3log/wide/i18n"
|
||||
"github.com/b3log/wide/log"
|
||||
"github.com/b3log/wide/session"
|
||||
"github.com/b3log/wide/util"
|
||||
"github.com/golang/glog"
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
|
||||
|
@ -39,6 +39,9 @@ import (
|
|||
// <sid, *util.WSChannel>>
|
||||
var ShellWS = map[string]*util.WSChannel{}
|
||||
|
||||
// Logger.
|
||||
var logger = log.NewLogger(os.Stdout)
|
||||
|
||||
// IndexHandler handles request of Shell index.
|
||||
func IndexHandler(w http.ResponseWriter, r *http.Request) {
|
||||
httpSession, _ := session.HTTPSession.Get(r, "wide-session")
|
||||
|
@ -67,12 +70,12 @@ func IndexHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
wideSessions := session.WideSessions.GetByUsername(username)
|
||||
|
||||
glog.V(3).Infof("User [%s] has [%d] sessions", username, len(wideSessions))
|
||||
logger.Debugf("User [%s] has [%d] sessions", username, len(wideSessions))
|
||||
|
||||
t, err := template.ParseFiles("views/shell.html")
|
||||
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
logger.Error(err)
|
||||
http.Error(w, err.Error(), 500)
|
||||
|
||||
return
|
||||
|
@ -104,13 +107,13 @@ func WSHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
ShellWS[sid] = &wsChan
|
||||
|
||||
glog.V(4).Infof("Open a new [Shell] with session [%s], %d", sid, len(ShellWS))
|
||||
logger.Debugf("Open a new [Shell] with session [%s], %d", sid, len(ShellWS))
|
||||
|
||||
input := map[string]interface{}{}
|
||||
|
||||
for {
|
||||
if err := wsChan.ReadJSON(&input); err != nil {
|
||||
glog.Error("Shell WS ERROR: " + err.Error())
|
||||
logger.Error("Shell WS ERROR: " + err.Error())
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -139,7 +142,7 @@ func WSHandler(w http.ResponseWriter, r *http.Request) {
|
|||
ret = map[string]interface{}{"output": output, "cmd": "shell-output"}
|
||||
|
||||
if err := wsChan.WriteJSON(&ret); err != nil {
|
||||
glog.Error("Shell WS ERROR: " + err.Error())
|
||||
logger.Error("Shell WS ERROR: " + err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -18,9 +18,12 @@ import (
|
|||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"github.com/b3log/wide/log"
|
||||
)
|
||||
|
||||
// Logger.
|
||||
var fileLogger = log.NewLogger(os.Stdout)
|
||||
|
||||
type myfile struct{}
|
||||
|
||||
// File utilities.
|
||||
|
@ -70,7 +73,7 @@ func (*myfile) IsImg(extension string) bool {
|
|||
func (*myfile) IsDir(path string) bool {
|
||||
fio, err := os.Lstat(path)
|
||||
if nil != err {
|
||||
glog.Warningf("Determines whether [%s] is a directory failed: [%v]", path, err)
|
||||
fileLogger.Warnf("Determines whether [%s] is a directory failed: [%v]", path, err)
|
||||
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -15,14 +15,18 @@
|
|||
package util
|
||||
|
||||
import (
|
||||
"os"
|
||||
"runtime/debug"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"github.com/b3log/wide/log"
|
||||
)
|
||||
|
||||
// Logger.
|
||||
var logger = log.NewLogger(os.Stdout)
|
||||
|
||||
// Recover recovers a panic.
|
||||
func Recover() {
|
||||
if re := recover(); nil != re {
|
||||
glog.Errorf("PANIC RECOVERED:\n %v, %s", re, debug.Stack())
|
||||
logger.Errorf("PANIC RECOVERED:\n %v, %s", re, debug.Stack())
|
||||
}
|
||||
}
|
||||
|
|
12
util/ret.go
12
util/ret.go
|
@ -18,17 +18,21 @@ import (
|
|||
"compress/gzip"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"github.com/b3log/wide/log"
|
||||
)
|
||||
|
||||
// Logger.
|
||||
var retLogger = log.NewLogger(os.Stdout)
|
||||
|
||||
// RetJSON writes HTTP response with "Content-Type, application/json".
|
||||
func RetJSON(w http.ResponseWriter, r *http.Request, res map[string]interface{}) {
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
|
||||
data, err := json.Marshal(res)
|
||||
if err != nil {
|
||||
glog.Error(err)
|
||||
retLogger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -43,13 +47,13 @@ func RetGzJSON(w http.ResponseWriter, r *http.Request, res map[string]interface{
|
|||
gz := gzip.NewWriter(w)
|
||||
err := json.NewEncoder(gz).Encode(res)
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
retLogger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
err = gz.Close()
|
||||
if nil != err {
|
||||
glog.Error(err)
|
||||
retLogger.Error(err)
|
||||
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue