mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-01-11 03:11:50 +00:00
s3: add debug logs for commands
* initialize zerolog for commands * Change default log format: remote colors and timestamp
This commit is contained in:
@@ -2,7 +2,6 @@ package api
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
"github.com/aptly-dev/aptly/aptly"
|
"github.com/aptly-dev/aptly/aptly"
|
||||||
@@ -56,13 +55,9 @@ func Router(c *ctx.AptlyContext) http.Handler {
|
|||||||
router.UseRawPath = true
|
router.UseRawPath = true
|
||||||
|
|
||||||
if c.Config().LogFormat == "json" {
|
if c.Config().LogFormat == "json" {
|
||||||
c.StructuredLogging(true)
|
|
||||||
utils.SetupJSONLogger(c.Config().LogLevel, os.Stdout)
|
|
||||||
gin.DefaultWriter = utils.LogWriter{Logger: log.Logger}
|
gin.DefaultWriter = utils.LogWriter{Logger: log.Logger}
|
||||||
router.Use(JSONLogger())
|
router.Use(JSONLogger())
|
||||||
} else {
|
} else {
|
||||||
c.StructuredLogging(false)
|
|
||||||
utils.SetupDefaultLogger(c.Config().LogLevel)
|
|
||||||
router.Use(gin.Logger())
|
router.Use(gin.Logger())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/aptly-dev/aptly/aptly"
|
"github.com/aptly-dev/aptly/aptly"
|
||||||
|
"github.com/aptly-dev/aptly/utils"
|
||||||
"github.com/cheggaaa/pb"
|
"github.com/cheggaaa/pb"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
"github.com/wsxiaoys/terminal/color"
|
"github.com/wsxiaoys/terminal/color"
|
||||||
@@ -78,7 +79,7 @@ func (p *Progress) InitBar(count int64, isBytes bool, _ aptly.BarType) {
|
|||||||
if p.bar != nil {
|
if p.bar != nil {
|
||||||
panic("bar already initialized")
|
panic("bar already initialized")
|
||||||
}
|
}
|
||||||
if RunningOnTerminal() {
|
if utils.RunningOnTerminal() {
|
||||||
p.bar = pb.New(0)
|
p.bar = pb.New(0)
|
||||||
p.bar.Total = count
|
p.bar.Total = count
|
||||||
p.bar.NotPrint = true
|
p.bar.NotPrint = true
|
||||||
@@ -141,7 +142,7 @@ func (p *Progress) PrintfStdErr(msg string, a ...interface{}) {
|
|||||||
|
|
||||||
// ColoredPrintf does printf in colored way + newline
|
// ColoredPrintf does printf in colored way + newline
|
||||||
func (p *Progress) ColoredPrintf(msg string, a ...interface{}) {
|
func (p *Progress) ColoredPrintf(msg string, a ...interface{}) {
|
||||||
if RunningOnTerminal() {
|
if utils.RunningOnTerminal() {
|
||||||
p.queue <- printTask{code: codePrint, message: color.Sprintf(msg, a...) + "\n"}
|
p.queue <- printTask{code: codePrint, message: color.Sprintf(msg, a...) + "\n"}
|
||||||
} else {
|
} else {
|
||||||
// stip color marks
|
// stip color marks
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
package console
|
|
||||||
|
|
||||||
import (
|
|
||||||
"syscall"
|
|
||||||
|
|
||||||
"golang.org/x/term"
|
|
||||||
)
|
|
||||||
|
|
||||||
// RunningOnTerminal checks whether stdout is terminal
|
|
||||||
func RunningOnTerminal() bool {
|
|
||||||
return term.IsTerminal(syscall.Stdout)
|
|
||||||
}
|
|
||||||
@@ -123,6 +123,14 @@ func (context *AptlyContext) config() *utils.ConfigStructure {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if utils.Config.LogFormat == "json" {
|
||||||
|
context.StructuredLogging(true)
|
||||||
|
utils.SetupJSONLogger(utils.Config.LogLevel, os.Stdout)
|
||||||
|
} else {
|
||||||
|
context.StructuredLogging(false)
|
||||||
|
utils.SetupDefaultLogger(utils.Config.LogLevel)
|
||||||
|
}
|
||||||
|
|
||||||
context.configLoaded = true
|
context.configLoaded = true
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ func (storage *PublishedStorage) PutFile(path string, sourceFilename string) err
|
|||||||
}
|
}
|
||||||
defer source.Close()
|
defer source.Close()
|
||||||
|
|
||||||
|
log.Debug().Msgf("S3: PutFile '%s'", path)
|
||||||
err = storage.putFile(path, source, "")
|
err = storage.putFile(path, source, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = errors.Wrap(err, fmt.Sprintf("error uploading %s to %s", sourceFilename, storage))
|
err = errors.Wrap(err, fmt.Sprintf("error uploading %s to %s", sourceFilename, storage))
|
||||||
@@ -196,7 +197,6 @@ func (storage *PublishedStorage) getMD5(path string) (string, error) {
|
|||||||
|
|
||||||
// putFile uploads file-like object to
|
// putFile uploads file-like object to
|
||||||
func (storage *PublishedStorage) putFile(path string, source io.ReadSeeker, sourceMD5 string) error {
|
func (storage *PublishedStorage) putFile(path string, source io.ReadSeeker, sourceMD5 string) error {
|
||||||
|
|
||||||
params := &s3.PutObjectInput{
|
params := &s3.PutObjectInput{
|
||||||
Bucket: aws.String(storage.bucket),
|
Bucket: aws.String(storage.bucket),
|
||||||
Key: aws.String(filepath.Join(storage.prefix, path)),
|
Key: aws.String(filepath.Join(storage.prefix, path)),
|
||||||
@@ -238,6 +238,7 @@ func (storage *PublishedStorage) Remove(path string) error {
|
|||||||
Key: aws.String(filepath.Join(storage.prefix, path)),
|
Key: aws.String(filepath.Join(storage.prefix, path)),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Debug().Msgf("S3: Remove '%s'", path)
|
||||||
if _, err := storage.s3.DeleteObject(context.TODO(), params); err != nil {
|
if _, err := storage.s3.DeleteObject(context.TODO(), params); err != nil {
|
||||||
var notFoundErr *smithy.GenericAPIError
|
var notFoundErr *smithy.GenericAPIError
|
||||||
if errors.As(err, ¬FoundErr) && notFoundErr.Code == "NoSuchBucket" {
|
if errors.As(err, ¬FoundErr) && notFoundErr.Code == "NoSuchBucket" {
|
||||||
@@ -270,6 +271,7 @@ func (storage *PublishedStorage) RemoveDirs(path string, _ aptly.Progress) error
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Debug().Msgf("S3: RemoveDirs '%s'", path)
|
||||||
if storage.disableMultiDel {
|
if storage.disableMultiDel {
|
||||||
for i := range filelist {
|
for i := range filelist {
|
||||||
params := &s3.DeleteObjectInput{
|
params := &s3.DeleteObjectInput{
|
||||||
@@ -385,6 +387,7 @@ func (storage *PublishedStorage) LinkFromPool(publishedPrefix, publishedRelPath,
|
|||||||
}
|
}
|
||||||
defer source.Close()
|
defer source.Close()
|
||||||
|
|
||||||
|
log.Debug().Msgf("S3: LinkFromPool '%s'", relPath)
|
||||||
err = storage.putFile(relPath, source, sourceMD5)
|
err = storage.putFile(relPath, source, sourceMD5)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
storage.pathCache[relPath] = sourceMD5
|
storage.pathCache[relPath] = sourceMD5
|
||||||
@@ -465,6 +468,7 @@ func (storage *PublishedStorage) RenameFile(oldName, newName string) error {
|
|||||||
params.ServerSideEncryption = storage.encryptionMethod
|
params.ServerSideEncryption = storage.encryptionMethod
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Debug().Msgf("S3: RenameFile %s -> %s", oldName, newName)
|
||||||
_, err := storage.s3.CopyObject(context.TODO(), params)
|
_, err := storage.s3.CopyObject(context.TODO(), params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error copying %s -> %s in %s: %s", oldName, newName, storage, err)
|
return fmt.Errorf("error copying %s -> %s in %s: %s", oldName, newName, storage, err)
|
||||||
@@ -494,6 +498,7 @@ func (storage *PublishedStorage) SymLink(src string, dst string) error {
|
|||||||
params.ServerSideEncryption = types.ServerSideEncryption(storage.encryptionMethod)
|
params.ServerSideEncryption = types.ServerSideEncryption(storage.encryptionMethod)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Debug().Msgf("S3: SymLink %s -> %s", src, dst)
|
||||||
_, err := storage.s3.CopyObject(context.TODO(), params)
|
_, err := storage.s3.CopyObject(context.TODO(), params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error symlinking %s -> %s in %s: %s", src, dst, storage, err)
|
return fmt.Errorf("error symlinking %s -> %s in %s: %s", src, dst, storage, err)
|
||||||
@@ -504,6 +509,7 @@ func (storage *PublishedStorage) SymLink(src string, dst string) error {
|
|||||||
|
|
||||||
// HardLink using symlink functionality as hard links do not exist
|
// HardLink using symlink functionality as hard links do not exist
|
||||||
func (storage *PublishedStorage) HardLink(src string, dst string) error {
|
func (storage *PublishedStorage) HardLink(src string, dst string) error {
|
||||||
|
log.Debug().Msgf("S3: HardLink %s -> %s", src, dst)
|
||||||
return storage.SymLink(src, dst)
|
return storage.SymLink(src, dst)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,26 @@
|
|||||||
Loading packages...
|
Loading packages...
|
||||||
Generating metadata files and linking package files...
|
Generating metadata files and linking package files...
|
||||||
|
DBG S3: LinkFromPool 'pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb'
|
||||||
|
DBG S3: LinkFromPool 'pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc'
|
||||||
|
DBG S3: LinkFromPool 'pool/main/p/pyspi/pyspi_0.6.1-1.3.diff.gz'
|
||||||
|
DBG S3: LinkFromPool 'pool/main/p/pyspi/pyspi_0.6.1.orig.tar.gz'
|
||||||
|
DBG S3: LinkFromPool 'pool/main/p/pyspi/pyspi_0.6.1-1.3.dsc'
|
||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Packages'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Packages.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Packages.bz2'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/source/Sources'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/source/Sources.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/source/Sources.bz2'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/Contents-i386.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Release'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/source/Release'
|
||||||
|
DBG S3: PutFile 'dists/maverick/Contents-i386.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/Release'
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
|
DBG S3: PutFile 'dists/maverick/Release.gpg'
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
|
DBG S3: PutFile 'dists/maverick/InRelease'
|
||||||
|
|
||||||
Local repo local-repo has been successfully published.
|
Local repo local-repo has been successfully published.
|
||||||
Now you can add following line to apt sources:
|
Now you can add following line to apt sources:
|
||||||
|
|||||||
@@ -1,9 +1,52 @@
|
|||||||
Loading packages...
|
Loading packages...
|
||||||
Generating metadata files and linking package files...
|
Generating metadata files and linking package files...
|
||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Packages.tmp'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Packages.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Packages.tmp.bz2'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/source/Sources.tmp'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/source/Sources.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/source/Sources.tmp.bz2'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/Contents-i386.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Release.tmp'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/source/Release.tmp'
|
||||||
|
DBG S3: PutFile 'dists/maverick/Contents-i386.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/Release.tmp'
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
|
DBG S3: PutFile 'dists/maverick/Release.tmp.gpg'
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
|
DBG S3: PutFile 'dists/maverick/InRelease.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-i386/Packages.tmp -> dists/maverick/main/binary-i386/Packages
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-i386/Packages.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-i386/Packages.tmp.gz -> dists/maverick/main/binary-i386/Packages.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-i386/Packages.tmp.gz'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-i386/Packages.tmp.bz2 -> dists/maverick/main/binary-i386/Packages.bz2
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-i386/Packages.tmp.bz2'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/Contents-i386.tmp.gz -> dists/maverick/main/Contents-i386.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/main/Contents-i386.tmp.gz'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-i386/Release.tmp -> dists/maverick/main/binary-i386/Release
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-i386/Release.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/InRelease.tmp -> dists/maverick/InRelease
|
||||||
|
DBG S3: Remove 'dists/maverick/InRelease.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/source/Sources.tmp -> dists/maverick/main/source/Sources
|
||||||
|
DBG S3: Remove 'dists/maverick/main/source/Sources.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/source/Sources.tmp.gz -> dists/maverick/main/source/Sources.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/main/source/Sources.tmp.gz'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/source/Sources.tmp.bz2 -> dists/maverick/main/source/Sources.bz2
|
||||||
|
DBG S3: Remove 'dists/maverick/main/source/Sources.tmp.bz2'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/source/Release.tmp -> dists/maverick/main/source/Release
|
||||||
|
DBG S3: Remove 'dists/maverick/main/source/Release.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/Contents-i386.tmp.gz -> dists/maverick/Contents-i386.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/Contents-i386.tmp.gz'
|
||||||
|
DBG S3: RenameFile dists/maverick/Release.tmp -> dists/maverick/Release
|
||||||
|
DBG S3: Remove 'dists/maverick/Release.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/Release.tmp.gpg -> dists/maverick/Release.gpg
|
||||||
|
DBG S3: Remove 'dists/maverick/Release.tmp.gpg'
|
||||||
Cleaning up published repository s3:test1:./maverick...
|
Cleaning up published repository s3:test1:./maverick...
|
||||||
Cleaning up component 'main'...
|
Cleaning up component 'main'...
|
||||||
|
DBG S3: Remove 'pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc'
|
||||||
|
DBG S3: Remove 'pool/main/p/pyspi/pyspi_0.6.1-1.3.diff.gz'
|
||||||
|
DBG S3: Remove 'pool/main/p/pyspi/pyspi_0.6.1-1.3.dsc'
|
||||||
|
DBG S3: Remove 'pool/main/p/pyspi/pyspi_0.6.1.orig.tar.gz'
|
||||||
|
|
||||||
Published local repository s3:test1:./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
Published local repository s3:test1:./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -1,9 +1,58 @@
|
|||||||
Loading packages...
|
Loading packages...
|
||||||
Generating metadata files and linking package files...
|
Generating metadata files and linking package files...
|
||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Release.tmp'
|
||||||
|
DBG S3: PutFile 'dists/maverick/Contents-amd64.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/Contents-i386.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-amd64/Packages.tmp'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-amd64/Packages.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-amd64/Packages.tmp.bz2'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Packages.tmp'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Packages.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Packages.tmp.bz2'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/Contents-amd64.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/Contents-i386.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-amd64/Release.tmp'
|
||||||
|
DBG S3: PutFile 'dists/maverick/Release.tmp'
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
|
DBG S3: PutFile 'dists/maverick/Release.tmp.gpg'
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
|
DBG S3: PutFile 'dists/maverick/InRelease.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/Contents-amd64.tmp.gz -> dists/maverick/main/Contents-amd64.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/main/Contents-amd64.tmp.gz'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-i386/Release.tmp -> dists/maverick/main/binary-i386/Release
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-i386/Release.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/Contents-i386.tmp.gz -> dists/maverick/main/Contents-i386.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/main/Contents-i386.tmp.gz'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-amd64/Release.tmp -> dists/maverick/main/binary-amd64/Release
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-amd64/Release.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/Release.tmp -> dists/maverick/Release
|
||||||
|
DBG S3: Remove 'dists/maverick/Release.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/InRelease.tmp -> dists/maverick/InRelease
|
||||||
|
DBG S3: Remove 'dists/maverick/InRelease.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-amd64/Packages.tmp -> dists/maverick/main/binary-amd64/Packages
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-amd64/Packages.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-amd64/Packages.tmp.bz2 -> dists/maverick/main/binary-amd64/Packages.bz2
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-amd64/Packages.tmp.bz2'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-i386/Packages.tmp.bz2 -> dists/maverick/main/binary-i386/Packages.bz2
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-i386/Packages.tmp.bz2'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-i386/Packages.tmp -> dists/maverick/main/binary-i386/Packages
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-i386/Packages.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-i386/Packages.tmp.gz -> dists/maverick/main/binary-i386/Packages.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-i386/Packages.tmp.gz'
|
||||||
|
DBG S3: RenameFile dists/maverick/Release.tmp.gpg -> dists/maverick/Release.gpg
|
||||||
|
DBG S3: Remove 'dists/maverick/Release.tmp.gpg'
|
||||||
|
DBG S3: RenameFile dists/maverick/Contents-amd64.tmp.gz -> dists/maverick/Contents-amd64.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/Contents-amd64.tmp.gz'
|
||||||
|
DBG S3: RenameFile dists/maverick/Contents-i386.tmp.gz -> dists/maverick/Contents-i386.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/Contents-i386.tmp.gz'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-amd64/Packages.tmp.gz -> dists/maverick/main/binary-amd64/Packages.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-amd64/Packages.tmp.gz'
|
||||||
Cleaning up published repository s3:test1:./maverick...
|
Cleaning up published repository s3:test1:./maverick...
|
||||||
Cleaning up component 'main'...
|
Cleaning up component 'main'...
|
||||||
|
DBG S3: Remove 'pool/main/g/gnuplot/gnuplot-doc_4.6.1-1~maverick2_all.deb'
|
||||||
|
DBG S3: Remove 'pool/main/g/gnuplot/gnuplot-nox_4.6.1-1~maverick2_amd64.deb'
|
||||||
|
DBG S3: Remove 'pool/main/g/gnuplot/gnuplot-nox_4.6.1-1~maverick2_i386.deb'
|
||||||
|
DBG S3: Remove 'pool/main/g/gnuplot/gnuplot_4.6.1-1~maverick2_all.deb'
|
||||||
|
|
||||||
Published snapshot repository s3:test1:./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
Published snapshot repository s3:test1:./maverick (origin: LP-PPA-gladky-anton-gnuplot) [amd64, i386] publishes {main: [snap3]: Pulled into 'snap2' with 'snap1' as source, pull request was: 'gnuplot-x11'} has been successfully switched to new source.
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
|
DBG S3: RemoveDirs 'dists/sq2'
|
||||||
Cleaning up published repository s3:test1:./sq2...
|
Cleaning up published repository s3:test1:./sq2...
|
||||||
Cleaning up component 'main'...
|
Cleaning up component 'main'...
|
||||||
|
DBG S3: Remove 'pool/main/b/boost-defaults/libboost-program-options-dev_1.62.0.1_i386.deb'
|
||||||
|
DBG S3: Remove 'pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc'
|
||||||
|
DBG S3: Remove 'pool/main/p/pyspi/pyspi_0.6.1-1.3.diff.gz'
|
||||||
|
DBG S3: Remove 'pool/main/p/pyspi/pyspi_0.6.1-1.3.dsc'
|
||||||
|
DBG S3: Remove 'pool/main/p/pyspi/pyspi_0.6.1.orig.tar.gz'
|
||||||
|
|
||||||
Published repository has been removed successfully.
|
Published repository has been removed successfully.
|
||||||
|
|||||||
@@ -1,9 +1,52 @@
|
|||||||
Loading packages...
|
Loading packages...
|
||||||
Generating metadata files and linking package files...
|
Generating metadata files and linking package files...
|
||||||
Finalizing metadata files...
|
Finalizing metadata files...
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/Contents-i386.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Release.tmp'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/source/Release.tmp'
|
||||||
|
DBG S3: PutFile 'dists/maverick/Contents-i386.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Packages.tmp'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Packages.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/binary-i386/Packages.tmp.bz2'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/source/Sources.tmp'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/source/Sources.tmp.gz'
|
||||||
|
DBG S3: PutFile 'dists/maverick/main/source/Sources.tmp.bz2'
|
||||||
|
DBG S3: PutFile 'dists/maverick/Release.tmp'
|
||||||
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
Signing file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
|
DBG S3: PutFile 'dists/maverick/Release.tmp.gpg'
|
||||||
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
|
||||||
|
DBG S3: PutFile 'dists/maverick/InRelease.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/InRelease.tmp -> dists/maverick/InRelease
|
||||||
|
DBG S3: Remove 'dists/maverick/InRelease.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/source/Release.tmp -> dists/maverick/main/source/Release
|
||||||
|
DBG S3: Remove 'dists/maverick/main/source/Release.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/Contents-i386.tmp.gz -> dists/maverick/Contents-i386.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/Contents-i386.tmp.gz'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-i386/Packages.tmp -> dists/maverick/main/binary-i386/Packages
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-i386/Packages.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-i386/Packages.tmp.bz2 -> dists/maverick/main/binary-i386/Packages.bz2
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-i386/Packages.tmp.bz2'
|
||||||
|
DBG S3: RenameFile dists/maverick/Release.tmp -> dists/maverick/Release
|
||||||
|
DBG S3: Remove 'dists/maverick/Release.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/source/Sources.tmp.bz2 -> dists/maverick/main/source/Sources.bz2
|
||||||
|
DBG S3: Remove 'dists/maverick/main/source/Sources.tmp.bz2'
|
||||||
|
DBG S3: RenameFile dists/maverick/Release.tmp.gpg -> dists/maverick/Release.gpg
|
||||||
|
DBG S3: Remove 'dists/maverick/Release.tmp.gpg'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/Contents-i386.tmp.gz -> dists/maverick/main/Contents-i386.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/main/Contents-i386.tmp.gz'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-i386/Release.tmp -> dists/maverick/main/binary-i386/Release
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-i386/Release.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/binary-i386/Packages.tmp.gz -> dists/maverick/main/binary-i386/Packages.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/main/binary-i386/Packages.tmp.gz'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/source/Sources.tmp -> dists/maverick/main/source/Sources
|
||||||
|
DBG S3: Remove 'dists/maverick/main/source/Sources.tmp'
|
||||||
|
DBG S3: RenameFile dists/maverick/main/source/Sources.tmp.gz -> dists/maverick/main/source/Sources.gz
|
||||||
|
DBG S3: Remove 'dists/maverick/main/source/Sources.tmp.gz'
|
||||||
Cleaning up published repository s3:test1:./maverick...
|
Cleaning up published repository s3:test1:./maverick...
|
||||||
Cleaning up component 'main'...
|
Cleaning up component 'main'...
|
||||||
|
DBG S3: Remove 'pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc'
|
||||||
|
DBG S3: Remove 'pool/main/p/pyspi/pyspi_0.6.1-1.3.diff.gz'
|
||||||
|
DBG S3: Remove 'pool/main/p/pyspi/pyspi_0.6.1-1.3.dsc'
|
||||||
|
DBG S3: Remove 'pool/main/p/pyspi/pyspi_0.6.1.orig.tar.gz'
|
||||||
|
|
||||||
Published local repository s3:test1:./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
Published local repository s3:test1:./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
|
||||||
|
|||||||
@@ -4,12 +4,19 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
|
"golang.org/x/term"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// RunningOnTerminal checks whether stdout is terminal
|
||||||
|
func RunningOnTerminal() bool {
|
||||||
|
return term.IsTerminal(syscall.Stdout)
|
||||||
|
}
|
||||||
|
|
||||||
type LogWriter struct {
|
type LogWriter struct {
|
||||||
Logger zerolog.Logger
|
Logger zerolog.Logger
|
||||||
}
|
}
|
||||||
@@ -32,11 +39,10 @@ func SetupDefaultLogger(levelStr string) {
|
|||||||
zerolog.MessageFieldName = "message"
|
zerolog.MessageFieldName = "message"
|
||||||
zerolog.LevelFieldName = "level"
|
zerolog.LevelFieldName = "level"
|
||||||
|
|
||||||
log.Logger = zerolog.New(zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: time.RFC3339}).
|
log.Logger = zerolog.New(zerolog.ConsoleWriter{Out: os.Stderr,
|
||||||
Level(GetLogLevelOrDebug(levelStr)).
|
FormatTimestamp: func(_ interface{}) string { return "" },
|
||||||
With().
|
NoColor: !RunningOnTerminal(),
|
||||||
Timestamp().
|
}).Level(GetLogLevelOrDebug(levelStr))
|
||||||
Logger()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetLogLevelOrDebug(levelStr string) zerolog.Level {
|
func GetLogLevelOrDebug(levelStr string) zerolog.Level {
|
||||||
|
|||||||
Reference in New Issue
Block a user