Poprawione logowanie

This commit is contained in:
Arkadiusz Rychliński 2022-11-08 11:36:07 +01:00
parent 3d21c4f1c2
commit abfa87b523
4 changed files with 37 additions and 18 deletions

View File

@ -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(&params.Passfile, "passfile", "", "Plik pgpass z hasłami do baz")
flag.StringVar(&params.OutDir, "outdir", "", "Katalog (istniejący i z prawem do zapisu), do którego generowane są wyniki")
flag.StringVar(&params.SqlDir, "sqldir", "scripts", "Katalog, w którym znajdują się skrypty do uruchomienia")
flag.StringVar(&params.LogFile, "log", "", "Plik, do którego zostanie dopisany log programu")
flag.Usage = printUsage
flag.Parse()
}

View File

@ -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)
}
}

View File

@ -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()

View File

@ -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)