Approccio per la registrazione poliglotta

3

Sto costruendo un'app desktop con un front-end Java e librerie Fortran estremamente performanti. Recentemente abbiamo iniziato a spingere più del nostro codice da Java e in Fortran (vedi sotto)

Presto avremo probabilmente moduli in SCALA (usando il sistema di calcolo distribuito di akka.io o JPPF).

Mi sto chiedendo cosa posso fare per cercare di garantire log sane, consolidate, formattate correttamente. In questo momento il nostro front-end java piuttosto esteso utilizza java.util.logging (JUL). Siccome sono sicuro che molti di voi hanno anche avuto a che fare, fare il bootstrap della nostra configurazione di logger è già un processo più complesso di quanto vorrei, ed è privo di test automatizzati.

I nostri binari Fortran, come per il comportamento predefinito delle librerie Intel Fortran, mormorano di tanto in tanto cose standard, che vengono semplicemente dimenticate quando il nostro codice viene distribuito. Mi piacerebbe molto che le cose si presentassero nello stesso formato che avrebbe una chiamata% JUL%.

Come faccio ad andare in giro con la registrazione poliglotta, in modo che io possa catturare gli avvertimenti / errori emessi da codice non JUL e / o non JVM, e comunque portarlo in un file che è ben formattato.

re: Fortran? davvero!?

  • questo è un linguaggio di programmazione morto! sei pazzo !!
    • l'ultima versione di fortran è il 2015, con intel che rilascia una nuova versione nel 2018. Grazie alla sua natura C-binding si lega a JNA / JNI con la stessa facilità del codice nativo.
  • ma perché hai bisogno di prestazioni, l'ottimizzazione prematura è la radice di tutti i mali!
    • ben consapevoli, ma sì, dopo aver passato un bel po 'di tempo ad ottimizzare il nostro codice Java e seguire le librerie più veloci che potevamo, un'algebra lineare di base non era ancora notevolmente più lenta in java che in fortran, e alcune operazioni sono semplicemente disponibile tramite MKL di intel
posta Groostav 24.07.2015 - 03:04
fonte

1 risposta

2

Non sono particolarmente pratico con JUL, ma ho avuto un discreto successo usando il modulo m_multilog del pacchetto flibs di Arjen Markus - vedi link l'ho modificato per utilizzare le classi di gravità syslog -style; i risultati sono ragionevolmente facili da analizzare in timestamp, classe di gravità e corpo del messaggio di registro.

Se la latenza non è un problema enorme, probabilmente è più semplice accedere a un file e leggerlo periodicamente nel sistema di gestione del registro principale, altrimenti, se è necessaria la registrazione "live", è possibile che rimanga bloccato a un log esterno libreria tramite il meccanismo iso_c_bindings .

Ad ogni modo, credo che flibs sia rilasciato sotto una forma della licenza BSD. Dovresti essere in grado di eseguire il manganello del modulo m_multilog nei registri di scrittura che il tuo processore di log può comprendere. Fa schifo che non esiste in effetti nessuna libreria standard per Fortran; potrebbe davvero utilizzare le funzionalità di base come la registrazione, il supporto CSV / JSON / XML, le librerie regex per l'elaborazione di input, ecc.

    
risposta data 05.12.2016 - 06:51
fonte

Leggi altre domande sui tag