Poprawione logowanie
This commit is contained in:
parent
3d21c4f1c2
commit
abfa87b523
@ -14,6 +14,7 @@ type Parameters struct {
|
|||||||
Passfile string
|
Passfile string
|
||||||
OutDir string
|
OutDir string
|
||||||
SqlDir string
|
SqlDir string
|
||||||
|
LogFile string
|
||||||
}
|
}
|
||||||
|
|
||||||
var params Parameters
|
var params Parameters
|
||||||
@ -24,6 +25,7 @@ func init() {
|
|||||||
flag.StringVar(¶ms.Passfile, "passfile", "", "Plik pgpass z hasłami do baz")
|
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.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.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.Usage = printUsage
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,33 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"multisql/cfg"
|
"multisql/cfg"
|
||||||
"multisql/mgr"
|
"multisql/mgr"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
log.SetFlags(log.LstdFlags)
|
||||||
params := cfg.GetParams()
|
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)
|
config, err := cfg.GetConfig(params)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "Błąd z konfiguracją: %v\n", err)
|
log.Fatalf("Błąd z konfiguracją: %v\n", err)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -22,25 +36,22 @@ func main() {
|
|||||||
} else {
|
} else {
|
||||||
fs, err := os.Stat(params.OutDir)
|
fs, err := os.Stat(params.OutDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "Podany katalog wyników nie jest prawidłowy: %v\n", err)
|
log.Fatalf("Podany katalog wyników nie jest prawidłowy: %v\n", err)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
if !fs.IsDir() {
|
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)
|
manager, err := mgr.Create(params.Verbose, params.OutDir, config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "Nie można wystartować operacji: %v\n", err)
|
log.Fatalf("Nie można wystartować operacji: %v\n", err)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
err = manager.Run()
|
err = manager.Run()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "Błąd przetwarzania: %v\n", err)
|
log.Fatalf("Błąd przetwarzania: %v\n", err)
|
||||||
os.Exit(1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
12
mgr/mgr.go
12
mgr/mgr.go
@ -2,6 +2,7 @@ package mgr
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"multisql/cfg"
|
"multisql/cfg"
|
||||||
"multisql/psql"
|
"multisql/psql"
|
||||||
"os"
|
"os"
|
||||||
@ -49,7 +50,7 @@ func (self Manager) GetScripts() ([]string, error) {
|
|||||||
scrpt := path.Join(self.config.SqlDir, e.Name())
|
scrpt := path.Join(self.config.SqlDir, e.Name())
|
||||||
_, err := os.Stat(scrpt)
|
_, err := os.Stat(scrpt)
|
||||||
if err != nil {
|
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
|
continue
|
||||||
}
|
}
|
||||||
scripts = append(scripts, scrpt)
|
scripts = append(scripts, scrpt)
|
||||||
@ -72,8 +73,8 @@ func (self Manager) Run() error {
|
|||||||
for _, con := range self.config.Connections {
|
for _, con := range self.config.Connections {
|
||||||
dbDir, err := self.createDirPerCon(con)
|
dbDir, err := self.createDirPerCon(con)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "Problem z utworzeniem katalogu wynikow dla połaczenie: %v", dbDir)
|
log.Printf("Problem z utworzeniem katalogu wynikow dla połaczenie: %v", dbDir)
|
||||||
fmt.Fprintf(os.Stderr, "Pomijam połaczenie")
|
log.Printf("Pomijam połaczenie")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,6 +88,7 @@ func (self Manager) Run() error {
|
|||||||
scripts,
|
scripts,
|
||||||
con,
|
con,
|
||||||
self.config.PsqlExec,
|
self.config.PsqlExec,
|
||||||
|
self.verbose,
|
||||||
)
|
)
|
||||||
go sql.Exec(stream)
|
go sql.Exec(stream)
|
||||||
}
|
}
|
||||||
@ -107,10 +109,10 @@ func (self Manager) Logger(group *sync.WaitGroup, stream <-chan psql.Result, con
|
|||||||
for event := range stream {
|
for event := range stream {
|
||||||
if event.Err != nil {
|
if event.Err != nil {
|
||||||
scr := path.Base(event.Script)
|
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 {
|
} else if self.verbose {
|
||||||
scr := path.Base(event.Script)
|
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()
|
group.Done()
|
||||||
|
10
psql/psql.go
10
psql/psql.go
@ -2,6 +2,7 @@ package psql
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"multisql/cfg"
|
"multisql/cfg"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
@ -16,6 +17,7 @@ type Instance struct {
|
|||||||
passfile string
|
passfile string
|
||||||
psqlExe string
|
psqlExe string
|
||||||
conn cfg.Connection
|
conn cfg.Connection
|
||||||
|
verbose bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type Result struct {
|
type Result struct {
|
||||||
@ -23,7 +25,7 @@ type Result struct {
|
|||||||
Err error
|
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{
|
instnace = Instance{
|
||||||
outdir: outdir,
|
outdir: outdir,
|
||||||
@ -31,6 +33,7 @@ func Create(passfile string, outdir string, scripts []string, conn cfg.Connectio
|
|||||||
passfile: passfile,
|
passfile: passfile,
|
||||||
conn: conn,
|
conn: conn,
|
||||||
psqlExe: psqlExe,
|
psqlExe: psqlExe,
|
||||||
|
verbose: verbose,
|
||||||
}
|
}
|
||||||
return instnace
|
return instnace
|
||||||
}
|
}
|
||||||
@ -62,7 +65,6 @@ func (self Instance) Exec(result chan<- Result) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
err = self.cmdPsql(outdir, connString, scr, absPassFile)
|
err = self.cmdPsql(outdir, connString, scr, absPassFile)
|
||||||
fmt.Println()
|
|
||||||
result <- Result{
|
result <- Result{
|
||||||
Script: scr,
|
Script: scr,
|
||||||
Err: err,
|
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()
|
err = cmd.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Błąd uruchamiania psql: %v", err)
|
return fmt.Errorf("Błąd uruchamiania psql: %v", err)
|
||||||
|
Loading…
Reference in New Issue
Block a user