Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-10-2010, 20:06   #1
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Programma per sistemare Log File

Ho svariate centinaia di MB di log files (generati per lo più da sw Java, ma non ha importanza la fonte che ha generato i log) che devo sistemare.

Per un errore nel sw, i vari files non sono insiemi disgiunti ma contengono parti duplicate e sovrapposte tra loro.
Ossia per esempio il log del 15esima settimana contiene parte della 13esima settimana, tutta la 14esima settimana e naturalmente la 15esima settimana.
Poi il file della 16esima settimana contiente parte delle 15esima e tutta la 16esima, il file della 17esima settimana invece è giusto e così via.

Io cerco un sw che mi permetta di fare 2 cose:
  • Concatenare tutti i files in unico file eliminado automaticamente (ma con precisione) le parti ripetute
  • Suddividere, se mi servisse, il file unico in file più piccoli frammentando per mese, per settimana o per giorno secondo le mie necessità

Finora perché erano pochi casi ho sempre sistemato tutto a mano (taglia ed incolla a mano), ma ora cercavo qualcosa di automatico dato che il numero di log errati che devo sistemare è cresciuto.
E siccome non avevo voglia di mettermi lì a scrivere un sw o anche uno script (esempio in Python) che faccia il lavoro, mi chiedevo cosa posso trovare (per windows e/o linux) di già pronto che soddisfi le mie necessità.

Suggerimenti ?

Ciao
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2010, 20:18   #2
khelidan1980
Senior Member
 
L'Avatar di khelidan1980
 
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
Quote:
Originariamente inviato da FabryHw Guarda i messaggi
Ho svariate centinaia di MB di log files (generati per lo più da sw Java, ma non ha importanza la fonte che ha generato i log) che devo sistemare.

Per un errore nel sw, i vari files non sono insiemi disgiunti ma contengono parti duplicate e sovrapposte tra loro.
Ossia per esempio il log del 15esima settimana contiene parte della 13esima settimana, tutta la 14esima settimana e naturalmente la 15esima settimana.
Poi il file della 16esima settimana contiente parte delle 15esima e tutta la 16esima, il file della 17esima settimana invece è giusto e così via.

Io cerco un sw che mi permetta di fare 2 cose:
  • Concatenare tutti i files in unico file eliminado automaticamente (ma con precisione) le parti ripetute
  • Suddividere, se mi servisse, il file unico in file più piccoli frammentando per mese, per settimana o per giorno secondo le mie necessità

Finora perché erano pochi casi ho sempre sistemato tutto a mano (taglia ed incolla a mano), ma ora cercavo qualcosa di automatico dato che il numero di log errati che devo sistemare è cresciuto.
E siccome non avevo voglia di mettermi lì a scrivere un sw o anche uno script (esempio in Python) che faccia il lavoro, mi chiedevo cosa posso trovare (per windows e/o linux) di già pronto che soddisfi le mie necessità.

Suggerimenti ?

Ciao
forse è meglio che correggi il baco originale se possibile, la prima richiesta mi pare alquanto difficile da esaudire
__________________
Khelidan
khelidan1980 è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2010, 21:50   #3
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Quote:
Originariamente inviato da khelidan1980 Guarda i messaggi
forse è meglio che correggi il baco originale se possibile, la prima richiesta mi pare alquanto difficile da esaudire
Questo non è possibile o facile a breve.
Sia perché il problema non sta nel mio sw ma nella libreria di logging (che ho aggiornato ad ogni nuova release uscita ma continua a fare il difetto), sia perché non ho capito perché si comporta così (bug della libreria, errore nel file di conf, problemi di memoria non sufficiente, ...ecc).

E cmq rimane sempre il problema dei log già generati e che devono essere sistemati (non mi basta sistemare il futuro, anzi mi è più utile sul passato).

In realtà visto che ogni riga nei file di log inizia con un preciso timestamp, l'operazione in sé non è difficile.
Basta leggere il file X e guardare l'ultima riga, poi cercare nel file X+1 quella riga e prendere il testo da lì in poi e così via.

Questo è sia il procedimento da seguire a mano che quello per un eventuale sw.
Solo che non ho tempo e voglia di scrivermi io il sw e cercavo qualcosa di esistente che già implementasse una tale richiesta (nonché anche la seconda che ho fatto).

Ultima modifica di FabryHw : 07-10-2010 alle 21:54.
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2010, 09:11   #4
khelidan1980
Senior Member
 
L'Avatar di khelidan1980
 
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
Sinceramente su due piedì non mi viene in mente un sw che faccia questo lavoro, sopratutto sempre parlando della prima richiesta senza scriverlo ad hoc, comunque sei sicuro che non sia un problema di configurazione, accesso concorrente ai file di log, cluster etc etc?


Ps: ma la libreria quale è? Qualcosa di pubblico tipo Log4j?
__________________
Khelidan
khelidan1980 è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2010, 09:21   #5
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
se il formato dei file é omogeneo, perché non crei una tabella ad hoc su un database e, file per file, inserisci i record controllandone l'unicitá secondo i tuoi criteri.

alla fine estrai tutto e lo salvi in un unico file
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2010, 09:50   #6
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Quote:
Originariamente inviato da khelidan1980 Guarda i messaggi
Sinceramente su due piedi non mi viene in mente un sw che faccia questo lavoro, sopratutto sempre parlando della prima richiesta senza scriverlo ad hoc, comunque sei sicuro che non sia un problema di configurazione, accesso concorrente ai file di log, cluster etc etc?


Ps: ma la libreria quale è? Qualcosa di pubblico tipo Log4j?
La libreria è LogBack (+ SL4J) che è proprio l'erede di Log4j

Doveva secondo il file di conf, archiviare ogni singolo giorno di log in un file zippato e questo per 3 log distinti (e per più clienti alias più installazioni).
Solo che a distanza di mesi quando sono andato a vedere la cartella di log l'ho trovata enorme (oltre il GB).

Alcuni log non li ha mai tagliati, ma ogni giorno ha archiviato una copia dell'intero log (ok sarà zippato ma è un file che continua a crescere e che viene duplicato ogni giorno) ed in altri casi invece ha tagliato ma random.
Ossia, per esempio, giorno 5 archiviato singolo, poi 5 + 6, poi 5-7, ...ecc
Finalmente al giorno 21 taglia giusto e dal 22 riparte con singolo giorno, ma già al 23 va in errore ancora.
In alcuni casi ha tagliato a metà del giorno e non sempre alla mezzanotte come dovrebbe, come alcune volte non ha archiviato nulla lasciando un temp file in giro.

Non ho ancora capito (anche se qualche sospetto ce l'ho) cosa gli impedisce di funzionare giusto, ma cmq il mio problema primario è sistemare i log fin qui pasticciati.

Un log l'ho sistemato a mano, erano un totale di quasi 3-4GB di files, ma una volta concatenato il tutto tagliando le parti comuni è rimasto un singolo file da 700MB (al più ora ho il problema di rifrazionarlo giusto, magari non singolo giorno ma su settimana o mese).
Grazie a grossi intervalli ripetuti ho dovuto fare a mano solo un decina o poco più di taglia ed incolla, ma non voglio sistemare a mano tutti i log che rimangono.

Ultima modifica di FabryHw : 08-10-2010 alle 11:04.
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2010, 09:59   #7
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Quote:
Originariamente inviato da Kralizek Guarda i messaggi
se il formato dei file é omogeneo, perché non crei una tabella ad hoc su un database e, file per file, inserisci i record controllandone l'unicitá secondo i tuoi criteri.

alla fine estrai tutto e lo salvi in un unico file
Si è un'idea che ho pure io (soprattutto perché con i DB me la cavo molto bene).
Basterebbe una tabella con 3 campi :
  • NomeFileSorgente
  • IdRigaNelFile
  • TestoRiga

Importare tutti i file e poi con delle abbastanza semplici query sql estrarre il testo senza duplicazioni.

L'unica cosa che mi ha evitato di farlo finora è che mi sembrava uno spreco di risorse.
Alcuni testi sono già su file qualcosa come 3 o più GB di dati, quindi tirati dentro un DB crescerebbero di dimensione (e già un MS SQL Express non basterebbe visto il limite dei 4GB di DB).

Ossia cercavo di fare qualcosa a livello di file.
Avevo pensato anche ad un uso incrementale di tool di diff&merge (es. winmerge in ambito windows) ma non saprei come fare il loop su tutti i file.
Insomma dovrei dirgli qualcosa come "tieni fisso il file a sx e continua a leggere nella finestra di dx nuovi file, integrando nella file a sx il testo nuovo presente solo a dx"
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2010, 12:16   #8
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
In che formato sono questi log?
Se ad esempio hanno un inizio riga fisso, tipo giorno + ora + qualcosa, insomma un criterio che ti permetta di discernere "dove" andare a copiare le righe, metterli a posto con un programmino automatico è banale, saranno sì e no 30 righe di codice.
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2010, 12:23   #9
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da yorkeiser Guarda i messaggi
In che formato sono questi log?
Se ad esempio hanno un inizio riga fisso, tipo giorno + ora + qualcosa, insomma un criterio che ti permetta di discernere "dove" andare a copiare le righe, metterli a posto con un programmino automatico è banale, saranno sì e no 30 righe di codice.
Anche secondo me, fa prima a scriverselo
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2010, 12:25   #10
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Quote:
Originariamente inviato da yorkeiser Guarda i messaggi
In che formato sono questi log?
Se ad esempio hanno un inizio riga fisso, tipo giorno + ora + qualcosa, insomma un criterio che ti permetta di discernere "dove" andare a copiare le righe, metterli a posto con un programmino automatico è banale, saranno sì e no 30 righe di codice.
Ogni riga inizia con un timestamp del tipo "2010-06-28 06:00:00,015 [Nome Thread]".

Fanno eccezione alla regola solo 2 o 3 casi:

1 - Quando viene stampato uno stack trace per una eccezione (gestita ma cmq scritta nei log per tenerne traccia) il timestamp c'è solo sulla prima riga delle molte righe di stack che possono essere scritte.
2 - Quando viene stampato (se il debug mode è attivo) il contenuto XML ricevuto o inviato, c'è una riga con il TimeStamp del tipo "XML scritto sul DB:" e sotto le righe che sono la stampa del XML senza timestamp
3 - Quando viene salvato l'output testuale di qualche applicazione esterna richiamata (o anche metodo remoto via Corba), se tale output è multiriga ovviamente il timestamp c'è solo sulla prima.

Ultima modifica di FabryHw : 08-10-2010 alle 12:27.
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2010, 12:35   #11
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Anche secondo me, fa prima a scriverselo
Si mi sto rassegnando all'idea.
Sto sistemando ancora a mano un log, perché anche qui si tratta di un 20-30 min di lavoro e ci può stare (meno tempo del fare il sw), ma visto che il lavoro dovrò ripeterlo più volte in tutti i posti (e per tutti i log) che ha scazzato, un sw mi servirà.

Mi sa che se non trovo qualcosa di pronto entro poco tempo, vado davvero con l'idea del DB.
E' la meno efficiente come risorse, ma probabilmente la più veloce da realizzare dato che tool di import file di testo dovrei averli già belli che pronti (o quasi), e con le query me la cavo molto bene.
Mentre con l'elaborazione stringhe ed accesso a file sono un po' più arrugginito.
Ci riuscirei anche con lo script (per esempio in python o in java stesso magari da usare con beanshell) ma probabilmente nel triplo del tempo di sviluppo.
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2010, 12:42   #12
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Se le eccezioni sono poche, puoi quindi supporre che una riga di tipo "non standard" sia stata scritta nella stessa giornata (mi pare di capire ti serva una suddivisione per settimane) della riga "standard" (ovvero con timestamp classico) subito precedente nel file di log.

Un algoritmo di base potrebbe essere:
Codice:
per ogni file di log "vecchio":
     apri il file in lettura
     cs=null  //accumulatore per salvare il valore della settimana
     while not fine file
         leggi riga
         se cs != calcola_settimana(timestamp appena letto dalla riga) or cs==null
              chiudi file su cui stai scrivendo, se ce ne sono
              apri file "Nuovo file di log Settimana cs" in append
              scrivi riga
          altrimenti
              scrivi riga
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Apple Podcasts introduce video con HLS e...
Gli iPhone 17, 17 Pro e 16e sono conveni...
Sentite l'Agenzia delle Entrate: le e-bi...
Recensione Synology DS1825+: 8 hard disk...
App IO: i numeri del portafoglio digital...
4 novità pesanti nelle offerte Am...
Kyndryl rafforza il SOC di Roma e apre i...
Gli accessori auto più desiderati su Ama...
'Molti produttori falliranno': l'allarme...
Robot aspirapolvere in super offerta su ...
Voto alla ballerina, la truffa su WhatsA...
NetApp INSIGHT XTRA Milano: piattaforme ...
Ecco una bella offerta: EUREKA J15 Ultra...
32GB di RAM, 1TB di SSD, AMD Ryzen AI 7 ...
Apple testa la crittografia RCS nella be...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:04.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v