Poprawione logowanie
This commit is contained in:
parent
3d21c4f1c2
commit
abfa87b523
@ -14,6 +14,7 @@ type Parameters struct {
|
||||
Passfile string
|
||||
OutDir string
|
||||
SqlDir string
|
||||
LogFile string
|
||||
}
|
||||
|
||||
var params Parameters
|
||||
@ -24,6 +25,7 @@ func init() {
|
||||
flag.StringVar(¶ms.Passfile, "passfile", "", "Plik pgpass z hasłami do baz")
|
||||
flag.StringVar(¶ms.OutDir, "outdir", "", "Katalog (istniejący i z prawem do zapisu), do którego generowane są wyniki")
|
||||
flag.StringVar(¶ms.SqlDir, "sqldir", "scripts", "Katalog, w którym znajdują się skrypty do uruchomienia")
|
||||
flag.StringVar(¶ms.LogFile, "log", "", "Plik, do którego zostanie dopisany log programu")
|
||||
flag.Usage = printUsage
|
||||
flag.Parse()
|
||||
}
|
||||
|
@ -1,19 +1,33 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"multisql/cfg"
|
||||
"multisql/mgr"
|
||||
"os"
|
||||
|
||||
"log"
|
||||
)
|
||||
|
||||
func main() {
|
||||
log.SetFlags(log.LstdFlags)
|
||||
params := cfg.GetParams()
|
||||
|
||||
if params.LogFile != "" {
|
||||
fh, err := os.OpenFile(params.LogFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o664)
|
||||
if err != nil {
|
||||
log.Fatalf("Nie udało się ustawić logu: %v", err)
|
||||
}
|
||||
defer fh.Close()
|
||||
log.SetOutput(fh)
|
||||
}
|
||||
|
||||
if params.Verbose {
|
||||
log.Print("MultiSQL - start")
|
||||
}
|
||||
config, err := cfg.GetConfig(params)
|
||||
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Błąd z konfiguracją: %v\n", err)
|
||||
os.Exit(1)
|
||||
log.Fatalf("Błąd z konfiguracją: %v\n", err)
|
||||
}
|
||||
|
||||
|
||||
@ -22,25 +36,22 @@ func main() {
|
||||
} else {
|
||||
fs, err := os.Stat(params.OutDir)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Podany katalog wyników nie jest prawidłowy: %v\n", err)
|
||||
os.Exit(1)
|
||||
log.Fatalf("Podany katalog wyników nie jest prawidłowy: %v\n", err)
|
||||
}
|
||||
if !fs.IsDir() {
|
||||
fmt.Fprintf(os.Stderr, "Ścieżka %s nie wskazuje na poprawny katalog\n", params.OutDir)
|
||||
log.Fatalf("Ścieżka %s nie wskazuje na poprawny katalog\n", params.OutDir)
|
||||
}
|
||||
}
|
||||
|
||||
manager, err := mgr.Create(params.Verbose, params.OutDir, config)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Nie można wystartować operacji: %v\n", err)
|
||||
os.Exit(1)
|
||||
log.Fatalf("Nie można wystartować operacji: %v\n", err)
|
||||
}
|
||||
|
||||
err = manager.Run()
|
||||
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Błąd przetwarzania: %v\n", err)
|
||||
os.Exit(1)
|
||||
log.Fatalf("Błąd przetwarzania: %v\n", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
12
mgr/mgr.go
12
mgr/mgr.go
@ -2,6 +2,7 @@ package mgr
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"multisql/cfg"
|
||||
"multisql/psql"
|
||||
"os"
|
||||
@ -49,7 +50,7 @@ func (self Manager) GetScripts() ([]string, error) {
|
||||
scrpt := path.Join(self.config.SqlDir, e.Name())
|
||||
_, err := os.Stat(scrpt)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Skrypt zostanie pominięty z powodu błedu: %v\n", err)
|
||||
log.Printf("Skrypt zostanie pominięty z powodu błedu: %v\n", err)
|
||||
continue
|
||||
}
|
||||
scripts = append(scripts, scrpt)
|
||||
@ -72,8 +73,8 @@ func (self Manager) Run() error {
|
||||
for _, con := range self.config.Connections {
|
||||
dbDir, err := self.createDirPerCon(con)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Problem z utworzeniem katalogu wynikow dla połaczenie: %v", dbDir)
|
||||
fmt.Fprintf(os.Stderr, "Pomijam połaczenie")
|
||||
log.Printf("Problem z utworzeniem katalogu wynikow dla połaczenie: %v", dbDir)
|
||||
log.Printf("Pomijam połaczenie")
|
||||
continue
|
||||
}
|
||||
|
||||
@ -87,6 +88,7 @@ func (self Manager) Run() error {
|
||||
scripts,
|
||||
con,
|
||||
self.config.PsqlExec,
|
||||
self.verbose,
|
||||
)
|
||||
go sql.Exec(stream)
|
||||
}
|
||||
@ -107,10 +109,10 @@ func (self Manager) Logger(group *sync.WaitGroup, stream <-chan psql.Result, con
|
||||
for event := range stream {
|
||||
if event.Err != nil {
|
||||
scr := path.Base(event.Script)
|
||||
fmt.Fprintf(os.Stderr, "%s:%d:%s:%s Skrypt: %s Błąd: %v\n", con.Host, con.Port, con.DbName, con.User, scr, event.Err)
|
||||
log.Printf("%s:%d:%s:%s Skrypt: %s Błąd: %v\n", con.Host, con.Port, con.DbName, con.User, scr, event.Err)
|
||||
} else if self.verbose {
|
||||
scr := path.Base(event.Script)
|
||||
fmt.Fprintf(os.Stderr, "%s:%d:%s:%s Skrypt %s zakończony poprawnie\n", con.Host, con.Port, con.DbName, con.User, scr)
|
||||
log.Printf("%s:%d:%s:%s Skrypt %s zakończony poprawnie\n", con.Host, con.Port, con.DbName, con.User, scr)
|
||||
}
|
||||
}
|
||||
group.Done()
|
||||
|
10
psql/psql.go
10
psql/psql.go
@ -2,6 +2,7 @@ package psql
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"multisql/cfg"
|
||||
"os"
|
||||
"os/exec"
|
||||
@ -16,6 +17,7 @@ type Instance struct {
|
||||
passfile string
|
||||
psqlExe string
|
||||
conn cfg.Connection
|
||||
verbose bool
|
||||
}
|
||||
|
||||
type Result struct {
|
||||
@ -23,7 +25,7 @@ type Result struct {
|
||||
Err error
|
||||
}
|
||||
|
||||
func Create(passfile string, outdir string, scripts []string, conn cfg.Connection, psqlExe string) (instnace Instance) {
|
||||
func Create(passfile string, outdir string, scripts []string, conn cfg.Connection, psqlExe string, verbose bool) (instnace Instance) {
|
||||
|
||||
instnace = Instance{
|
||||
outdir: outdir,
|
||||
@ -31,6 +33,7 @@ func Create(passfile string, outdir string, scripts []string, conn cfg.Connectio
|
||||
passfile: passfile,
|
||||
conn: conn,
|
||||
psqlExe: psqlExe,
|
||||
verbose: verbose,
|
||||
}
|
||||
return instnace
|
||||
}
|
||||
@ -62,7 +65,6 @@ func (self Instance) Exec(result chan<- Result) {
|
||||
continue
|
||||
}
|
||||
err = self.cmdPsql(outdir, connString, scr, absPassFile)
|
||||
fmt.Println()
|
||||
result <- Result{
|
||||
Script: scr,
|
||||
Err: err,
|
||||
@ -116,7 +118,9 @@ func (self Instance) cmdPsql(outdir string, connString string, script string, pa
|
||||
}
|
||||
|
||||
|
||||
fmt.Println("Uruchamiam", cmd.String())
|
||||
if self.verbose {
|
||||
log.Printf("Uruchamiam %s", cmd.String())
|
||||
}
|
||||
err = cmd.Run()
|
||||
if err != nil {
|
||||
return fmt.Errorf("Błąd uruchamiania psql: %v", err)
|
||||
|
Loading…
Reference in New Issue
Block a user