lunedì 18 gennaio 2021

Log4Net e Microsoft.Extensions.Logging

Per .Net Core, e ancor i più in .Net 5, Microsoft ha introdotto nuove api per il logging, Microsoft.Extensions.Logging

Queste Api forniscono un layer di astrazione e delle interfacce per il logging, ma lasciano aperta l'implementazione vera  e propria: Microsoft offre un pacchetto nuget anche per il .Net Framework, oltre che per .Net Core

Microsoft consiglia l'utilizzo di Serilog come provider. Serilog ha già un'estensione pronta per agganciarsi alle nuove api di logging.

Ho provato ad usare questa estensione, ma ho rilevato problemi di compatibilità con le api Microsoft nell'uso dell'ultima versione. Ho dovuto fare un downgrade delle Api per poter compilare.

Un'altra estensione già pronta all'uso è NLog: è molto simile a log4Net, che finora era il framework più usato per il logging.

Anche in questo caso esiste una estensione già pronta per le nuove api Microsoft.

Ho provato a integrare anche questo sistema, ma anche qui è stato necessario fare un downgrade delle librerie Microsoft


Come dicevo prima, nei progetti un po' più vecchi usualmente il logging veniva gestito tramite log4Net.

Se si cerca poi di distribuire un progetto Web su una piattaforma Cloud tipo Azure il semplice log su file è molto limitante, mentre è molto più comodo poter avere log su strumenti come Application Insight e simili.

Non parliamo poi di compilare in Net Standard. log4Net supporta Net Standard 1.3 (vedi qui), quindi tutta la parte Ado.Net, che è supportata in Net Standard 2.1 da dei gran bei warning.

Tocca quindi fare un pianto ed un lamento e far evolvere il log: mica banale, visto che tante, se non tutte le classi che abbiamo scritto (se siamo stati dei bravi sviluppatori) fanno uso del log!

Si, però vorremmo anche salvaguardare i nostri files di configurazioni in log4net, perché nel tempo ce li siamo personalizzati al millimetro, con i livelli di log giusti, escludendo classi che non ci interessano, enfatizzandone altre ecc ecc. Inoltre è troppo lungo trasformare tutto in una sola volta. Va fatto in maniera progressiva, quindi i 2 ambienti devono poter convivere per un periodo di tempo.

Per far convivere i 2 ambienti bisogna scrivere un provider per log4Net. A quel punto le nostre configurazioni in log4net sono salve e possiamo, in maniera incrementale, sfilare classe per classe log4net e mettere Microsoft.Extensions.Logging.

E infatti è quello che mi son divertito a fare, e devo dire che funziona.


L'implementazione e i test relativi a tutti i metodi di log si trovano qui

https://bitbucket.org/andreapalloni/log4netprovider/src/master/


lunedì 30 marzo 2020

Creare una stazione radio da PC

In questi giorni di reclusione forzata, mi sono divertito un po' a capire come poter fare broadcast audio on line dal proprio PC.

Cominciamo intanto dalla teoria. Per fare streaming ci vuole un server che irradi lo streaming verso internet. Questo server può essere privato, e quindi vi dovrete attrezzare sia con Hardware che con la connessione dati, oppure in hosting da qualche provider specializzato e qui basta poter raggiungere il provider.
Ci sono vari provider specializzati in webcast: io ne ho provati un paio, ed hanno tutti i loro pro e i loro contro.
Ho provato Spreaker ad esempio, che ha una buona grafica, un bell'appeal, strumenti anche da mobile per poter trasmettere, ma che, a livello free, non offre gratuitamente il broadcasting, ma solo la possibilità di caricare podcast. Il livello entry costa 4€ al mese, un'inezia, anche se ha un tempo limitato di live broadcast.

Poiché volevo provare l'ebrezza del broadcat "live" ho trovato Caster.fm, un fornitore di servizio sicuramente più di nicchia, anche meno "appealable", ma che permette di fare live.
E ora un'altra nota tecnica: i broadcast audio nel mondo sono di 2 tipi: Shoutcast ed Icecast. Shoutcast, ora alla versione 2, è il protocollo proprietario inventato da WinAmp (ah, che bei tempi), che può considerarsi lo standard per il broadcast.
Icecast è un'implementazione open per un protocollo di streaming audio.
I nostri amici di Caster, ed anche Spreaker a quanto ho visto dalle documentazioni, utilizzano il protocollo IceCast per la trasmissione.

Ed ora veniamo al software: quale DJ console usare?
Anche qui ci sono varie alternative, addirittura Spreaker mette a disposizione una console sia su PC che su tablet, e devo dire che è fatta piuttosto bene.
Un'alternativa pababile è VirtualDJ, una DJ console parzialmente free, ma che non è gratuita proprio per il broadcast.
L'alternativa open a tutto ciò, ed è quella che ho usato io, è Mixxx, un bel software per il Mixing, semplice e ormai robusto che può girare su Win, Mac e Linux.

Fatte tutte queste premesse andiamo a configurare Mixxx su Caster.fm.
Niente di più semplice! Basta seguire le istruzioni ed il gioco è fatto.
In pratica bisogna installare in locale l'encoder lame, che Mixxx non si porta dietro per questioni di licenza, e poi configurare il broadcast verso Caster con i parametri che ci vengono dati, in particolare la password.
Fatto questo si accende il server (che viene spento una volta al mese) e, schiacciato il tasto su Mixxx si va in onda.
Buon ascolto!

giovedì 2 gennaio 2020

Arduino Cli

Se, come me, usate Arduino fuori dall'Ide e vorreste poter compilare i vostri progetti via batch (e magari in un processo DevOps), finalmente stanno sviluppando Arduino CLI .

venerdì 8 febbraio 2019

lunedì 4 febbraio 2019