Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
logparser — Un toolkit di machine learning per il parsing dei log [ICSE'19, DSN'16] | Kitploit
Strumenti/GitHubGitHub/logpai/logparser
Machine LearningPaper e RicercaRilevamento di AnomalieAnalisi dei Log
GitHublogpai/logparser

logparser

Un toolkit di machine learning per il parsing dei log [ICSE'19, DSN'16]

Vedi Repository
2.0k5791 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Logparser

Python version Pypi version Pypi version Downloads License

Logparser fornisce un toolkit di machine learning e benchmark per il parsing automatico dei log, un passaggio fondamentale per l'analisi strutturata dei log. Applicando logparser, gli utenti possono estrarre automaticamente modelli di eventi da log non strutturati e convertire i messaggi di log grezzi in una sequenza di eventi strutturati. Il processo di parsing dei log è noto anche come estrazione di template di messaggi, estrazione di log key o clustering di messaggi di log in letteratura.


Un esempio di log parsing

🌈 Nuovi aggiornamenti

  • Dalla prima release di logparser, sono state inviate molte PR e issue a causa dell'incompatibilità con Python 3. Finalmente, aggiorniamo logparser v1.0.0 con il supporto a Python 3. Grazie per tutti i contributi (#PR86, #PR85, #PR83, #PR80, #PR65, #PR57, #PR53, #PR52, #PR51, #PR49, #PR18, #PR22)!
  • Abbiamo creato il pacchetto wheel logparser3 e lo abbiamo rilasciato su pypi. Installalo tramite pip install logparser3.
  • Abbiamo rifattorizzato la struttura del codice e abbellito il codice tramite il formatter di codice Python black.

Parser di log disponibili:

💡 Ti invitiamo a inviare una PR per integrare il tuo parser in logparser e aggiungere il tuo articolo alla tabella.

Installazione

Consigliamo di installare il pacchetto logparser e le dipendenze tramite pip install.``` pip install logparser3

root@kitploit:~
In particolare, il pacchetto dipende dai seguenti requisiti. Nota: il matching con regex in Python è fragile, quindi consigliamo di fissare la libreria regex alla versione 2022.3.2.

Nota: Se incontri ``"Error: need to escape..."``, segui le istruzioni [qui](https://github.com/logpai/logparser/issues/122).

+ python 3.6+
+ regex 2022.3.2
+ numpy
+ pandas
+ scipy
+ scikit-learn

Requisiti condizionali:

+ Se usi MoLFI: `deap`
+ Se usi SHISO: `nltk`
+ Se usi SLCT: `gcc`
+ Se usi LogCluster: `perl`
+ Se usi NuLog: `torch`, `torchvision`, `keras_preprocessing`
+ Se usi DivLog: `openai`, `tiktoken` (richiedono python 3.8+)

### Per iniziare

1. Esegui la demo:

    Per ogni parser di log, forniamo una demo per aiutarti a iniziare. Ogni demo mostra l'uso di base di un parser di log specifico e gli iperparametri da configurare. Ad esempio, il seguente comando mostra come eseguire la demo per Drain.

    ```
    cd logparser/Drain
    python demo.py
    ```

2. Esegui il benchmark:
  
    Per ogni parser di log, forniamo uno script di benchmark per eseguire il parsing dei log sui [dataset loghub_2k](https://github.com/logpai/logparser/tree/main/data#loghub_2k) per valutare l'accuratezza del parsing. Puoi anche usare [altri dataset di benchmark per il parsing dei log](https://github.com/logpai/logparser/tree/main/data#datasets).

    ```
    cd logparser/Drain 
    python benchmark.py
    ```

    I risultati del benchmark sono disponibili nel file readme di ciascun parser, ad es., https://github.com/logpai/logparser/tree/main/logparser/Drain#benchmark.

3. Analizza i tuoi log:

    È facile applicare logparser all'analisi dei tuoi dati di log. Per farlo, devi prima installare il pacchetto logparser3. Poi puoi sviluppare il tuo script seguendo il frammento di codice qui sotto per avviare il parsing dei log. Vedi il codice di esempio completo in [example/parse_your_own_logs.py](https://github.com/logpai/logparser/blob/main/example/parse_your_own_logs.py).

    ```python
    from logparser.Drain import LogParser

    input_dir = 'PATH_TO_LOGS/' # The input directory of log file
    output_dir = 'result/'  # The output directory of parsing results
    log_file = 'unknow.log'  # The input log file name
    log_format = '<Date> <Time> <Level>:<Content>' # Define log format to split message fields
    # Regular expression list for optional preprocessing (default: [])
    regex = [
        r'(/|)([0-9]+\.){3}[0-9]+(:[0-9]+|)(:|)' # IP
    ]
    st = 0.5  # Similarity threshold
    depth = 4  # Depth of all leaf nodes

    parser = LogParser(log_format, indir=input_dir, outdir=output_dir,  depth=depth, st=st, rex=regex)
    parser.parse(log_file)
    ```

    Dopo aver eseguito logparser, puoi ottenere i template degli eventi estratti e i log strutturati analizzati nella cartella di output.

    + `*_templates.csv` (Vedi esempio [HDFS_2k.log_templates.csv](https://github.com/logpai/logparser/blob/main/logparser/Drain/demo_result/HDFS_2k.log_templates.csv))
    
        | EventId  | EventTemplate                                  | Occurrences |
        |----------|------------------------------------------------|-------------|
        | dc2c74b7 | PacketResponder <*> for block <*> terminating                                    | 311 |
        | e3df2680 | Received block <*> of size <*> from <*>                                          | 292 |
        | 09a53393 | Receiving block <*> src: <*> dest: <*>                                           | 292 |

    + `*_structured.csv` (Vedi esempio [HDFS_2k.log_structured.csv](https://github.com/logpai/logparser/blob/main/logparser/Drain/demo_result/HDFS_2k.log_structured.csv))
    
        | ... | Level | Content                                                                                       | EventId  | EventTemplate                                                       | ParameterList                              |
        |-----|-------|-----------------------------------------------------------------------------------------------|----------|---------------------------------------------------------------------|--------------------------------------------|
        | ... | INFO  | PacketResponder 1 for block blk_38865049064139660 terminating | dc2c74b7 | PacketResponder <*> for block <*> terminating | ['1', 'blk_38865049064139660'] |
        | ... | INFO  | Received block blk_3587508140051953248 of size 67108864 from /10.251.42.84                              | e3df2680 | Received block <*> of size <*> from <*>  | ['blk_3587508140051953248', '67108864', '/10.251.42.84']                                     |
        | ... | INFO  | Verification succeeded for blk_-4980916519894289629    | 32777b38 | Verification succeeded for <*> |  ['blk_-4980916519894289629']   |


### Uso in produzione
L'obiettivo principale di logparser è l'uso per scopi di ricerca e benchmark. I ricercatori possono usare logparser come base di codice per sviluppare nuovi parser di log, mentre i professionisti possono valutare le prestazioni e la scalabilità degli attuali metodi di parsing dei log tramite il nostro benchmark. Consigliamo vivamente ai professionisti di provare logparser nel proprio ambiente di produzione. Ma siate consapevoli che l'implementazione attuale di logparser è lontana dall'essere pronta per l'uso in produzione. Anche se al momento non abbiamo intenzione di farlo, abbiamo alcuni suggerimenti per gli sviluppatori che vogliono costruire un parser di log intelligente di livello produttivo.

+ Si prega di prestare attenzione alle [licenze delle librerie di terze parti](https://github.com/logpai/logparser/blob/main/LICENSE.md) utilizzate in logparser. Suggeriamo di mantenere un solo parser ed eliminare gli altri, quindi ricostruire la wheel del pacchetto. Questo non romperà l'uso di logparser.
+ Si prega di migliorare logparser con efficienza e scalabilità tramite multi-processing, aggiungere il recupero dagli errori e la persistenza su disco o su code di messaggi come Kafka.
+ [Drain3](https://github.com/logpai/Drain3) fornisce un buon esempio di riferimento, costruito con [miglioramenti pratici](https://github.com/logpai/Drain3#new-features) per scenari di produzione.

### 🔥 Citazione
Se utilizzi i nostri strumenti logparser o i risultati del benchmark in una pubblicazione, ti preghiamo di citare i seguenti articoli.

+ [**ICSE'19**] Jieming Zhu, Shilin He, Jinyang Liu, Pinjia He, Qi Xie, Zibin Zheng, Michael R. Lyu. [Tools and Benchmarks for Automated Log Parsing](https://arxiv.org/pdf/1811.03509.pdf). *International Conference on Software Engineering (ICSE)*, 2019.
+ [**DSN'16**] Pinjia He, Jieming Zhu, Shilin He, Jian Li, Michael R. Lyu. [An Evaluation Study on Log Parsing and Its Use in Log Mining](https://jiemingzhu.github.io/pub/pjhe_dsn2016.pdf). *IEEE/IFIP International Conference on Dependable Systems and Networks (DSN)*, 2016.


### 🤗 Contributori

<!-- readme: zhujiem,contributors -start -->
<table>
	<tbody>
		<tr>
            <td align="center">
                <a href="https://github.com/zhujiem">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/471767126e4450e42b40b8e3f5437c2d9d0616f468675dde6feccac1976b18d0/ee334336551226b1483445bee71089fdf5e61115652a2a99375e54566f34c9bf-display-v1.webp" width="80;" alt="zhujiem"/>
                    <br />
                    <sub><b>Zhujiem</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/PinjiaHe">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/e9f83f96ab3d84e92152317c8d85d54a12fb0b0baea267d29e7d317a5caff94b/5b4a6af1bda6245edbb5c40ea1467625828536aeb88e984716753945b6235da2-display-v1.webp" width="80;" alt="PinjiaHe"/>
                    <br />
                    <sub><b>Pinjia He</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/JinYang88">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/7785c7974d5753fa21792097907be1e20efb5fc5bbf3aba61b0b4d2f4fe26fec/19a47a39c4db07a8a052ed05304e166cca4cf18683d89a1400688c576ae48b52-display-v1.webp" width="80;" alt="JinYang88"/>
                    <br />
                    <sub><b>LIU, Jinyang</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/Siyuexi">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/fe7de7203a407b36e2f44a57603594e01266d124ef558b53cb95ba28afc6127c/f7a7173a142ced37b910b650e3ad957b27fcf2f13f4c828ff6a72fb87111435f-display-v1.webp" width="80;" alt="Siyuexi"/>
                    <br />
                    <sub><b>Junjielong Xu</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/ShilinHe">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/c8b37cadfeb622c955b807776ab0fa19f058c8ad512ebb22eb98c79ad5e90c17/fc476296c1b1aa6b1dd7c3220a81a1b70838d5c113a65e6b2f98196d0615b8a3-display-v1.webp" width="80;" alt="ShilinHe"/>
                    <br />
                    <sub><b>Shilin HE</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/JosephMeghanathD">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/c2036c74a3116c7de955cae32687ffae61d8be46868cbcc61f771a7e9be4fa33/011ea30ec30f0db362d75632b310850b2783bd2c2428dfee7dc0fff182dc1bf8-display-v1.webp" width="80;" alt="JosephMeghanathD"/>
                    <br />
                    <sub><b>Joseph</b></sub>
                </a>
            </td>
		</tr>
		<tr>
            <td align="center">
                <a href="https://github.com/jcordon5">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/a4f67dd9f820a1dc763ae05e6d66ec6418d7e70abad8a9b5906413ab909f709e/4c8dc9fc08525d6d3c2334983160c0c9a48077fcc22b3498fe658aa133a2da02-display-v1.webp" width="80;" alt="jcordon5"/>
                    <br />
                    <sub><b>José A. Cordón </b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/rustamtemirov">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/3690f9e2cd318e8555a586fb32e221080e59e5de8917d82584da1f69e00be8cc/95300504879ab023f96e1cd73ca726c6720367b23e0d476e9a0b6cc23b89ff4d-display-v1.webp" width="80;" alt="rustamtemirov"/>
                    <br />
                    <sub><b>Rustam Temirov</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/gaiusyu">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/68c5eeea49f8a2ee2cd39b633ed1fb9765cde38399b12636dea0a3dd0920c86d/8faa00619c5b17d96e80dff1b124695997ece681c0931519346fa0e62407c578-display-v1.webp" width="80;" alt="gaiusyu"/>
                    <br />
                    <sub><b>Siyu Yu (Youth Yu)</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/thomasryck">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/ad3710fbbe7106ffe560fe918f87e77a95a6bf7a21dbf65827f93138c96aca5a/ed736bf9ffd9aa54686cc7a3d404f7c0072ecaced2403ff467d112482255c2b3-display-v1.webp" width="80;" alt="thomasryck"/>
                    <br />
                    <sub><b>Thomas Ryckeboer</b></sub>
                </a>
            </td>
            <td align="center">
                <a href="https://github.com/IsuruBoyagane15">
                    <img src="https://assets.kitploit.com/production/public/readmes/51023/dca9ea34301dd9441404246eb535a39d034518fd1311bebd68f1725bc38ba6b3/57b77cdaafca63553a32d53d83f1859d971c1628ef640c36ab1125939bb43a00-display-v1.webp" width="80;" alt="IsuruBoyagane15"/>
                    <br />
                    <sub><b>Isuru Boyagane</b></sub>
                </a>
            </td>
		</tr>
	<tbody>
</table>
<!-- readme: zhujiem,contributors -end -->

### Discussione
Ti invitiamo a unirti al nostro gruppo WeChat per qualsiasi domanda o discussione. In alternativa, puoi [aprire una segnalazione qui](https://github.com/logpai/logparser/issues/new).

![Scansiona il codice QR](https://assets.kitploit.com/production/public/readmes/51023/e24368b6c3ac236c9d073056856dc551521ef5ae785e34bdd33a6f49ef39f858/fdfe0ff4a0fd0c03d5d5bbcdec2e2922c75537e138f44fc105292f1f8fa90ea8-display-v1.webp)
Scarica lo strumento
PubblicazioneParserTitolo dell'articoloBenchmark
IPOM'03SLCTA Data Clustering Algorithm for Mining Patterns from Event Logs, di Risto Vaarandi.↗️
QSIC'08AELAbstracting Execution Logs to Execution Events for Enterprise Applications, di Zhen Ming Jiang, Ahmed E. Hassan, Parminder Flora, Gilbert Hamann.↗️
KDD'09IPLoMClustering Event Logs Using Iterative Partitioning, di Adetokunbo Makanju, A. Nur Zincir-Heywood, Evangelos E. Milios.↗️
ICDM'09LKEExecution Anomaly Detection in Distributed Systems through Unstructured Log Analysis, di Qiang Fu, Jian-Guang Lou, Yi Wang, Jiang Li. [Microsoft]↗️
MSR'10LFAAbstracting Log Lines to Log Event Types for Mining Software System Logs, di Meiyappan Nagappan, Mladen A. Vouk.↗️
CIKM'11LogSigLogSig: Generating System Events from Raw Textual Logs, di Liang Tang, Tao Li, Chang-Shing Perng.↗️
SCC'13SHISOIncremental Mining of System Log Format, di Masayoshi Mizutani.↗️
CNSM'15LogClusterLogCluster - A Data Clustering and Pattern Mining Algorithm for Event Logs, di Risto Vaarandi, Mauno Pihelgas.↗️
CNSM'15LenMaLength Matters: Clustering System Log Messages using Length of Words, di Keiichi Shima.↗️
CIKM'16LogMineLogMine: Fast Pattern Recognition for Log Analytics, di Hossein Hamooni, Biplob Debnath, Jianwu Xu, Hui Zhang, Geoff Jiang, Adbullah Mueen. [NEC]↗️
ICDM'16SpellSpell: Streaming Parsing of System Event Logs, di Min Du, Feifei Li.↗️
ICWS'17DrainDrain: An Online Log Parsing Approach with Fixed Depth Tree, di Pinjia He, Jieming Zhu, Zibin Zheng, e Michael R. Lyu.↗️
ICPC'18MoLFIA Search-based Approach for Accurate Identification of Log Message Formats, di Salma Messaoudi, Annibale Panichella, Domenico Bianculli, Lionel Briand, Raimondas Sasnauskas.↗️
TSE'20LogramLogram: Efficient Log Parsing Using n-Gram Dictionaries, di Hetong Dai, Heng Li, Che-Shao Chen, Weiyi Shang, e Tse-Hsun (Peter) Chen.↗️
ECML-PKDD'20NuLogSelf-Supervised Log Parsing, di Sasho Nedelkoski, Jasmin Bogatinovski, Alexander Acker, Jorge Cardoso, Odej Kao.↗️
ICSME'22ULPAn Effective Approach for Parsing Large Log Files, di Issam Sedki, Abdelwahab Hamou-Lhadj, Otmane Ait-Mohamed, Mohammed A. Shehab.↗️
TSC'23BrainBrain: Log Parsing with Bidirectional Parallel Tree, di Siyu Yu, Pinjia He, Ningjiang Chen, Yifan Wu.↗️
ICSE'24DivLogDivLog: Log Parsing with Prompt Enhanced In-Context Learning, di Junjielong Xu, Ruichun Yang, Yintong Huo, Chengyu Zhang, e Pinjia He.↗️