2009-01-06 6 views
2

Je souhaite ajouter des fonctionnalités de journalisation à une application cf.net exécutée sur WM6 Pro. Je regarde les exceptions de journalisation et certaines des sections de code les plus sensibles. Je souhaite que les journaux soient stockés localement (c'est-à-dire sur l'appareil) et qu'ils soient également téléchargés de manière fiable sur un serveur (ils devront être mis en file d'attente, mon application est parfois connectée).cf.net exception and other logging

Est-ce que quelqu'un sait si cela est possible avec log4net ou devrais-je écrire mon propre système de journalisation? Quelqu'un at-il des pointeurs?

Répondre

4

Si vous utilisez log4net pour cela, N'utilisez PAS l'option UDP Appender pour vous connecter à un serveur distant. Si le périphérique WM est connecté à un PC via ActiveSync et accède au réseau via le PC, tenter d'utiliser UDP provoquera le blocage d'ActiveSync d'une manière qui nécessite un redémarrage du PC et une réinitialisation logicielle du périphérique WM. J'ai fait une démo horriblement mal à cause de cela (nous avons perdu un énorme contrat). Log4net peut être génial dans d'autres environnements, mais j'ai trouvé qu'il s'agissait d'un PITA et ne vaut pas la peine dans Windows Mobile. Il est préférable d'écrire votre propre classe Logger simple qui utilise un TextWriter pour transférer des informations dans un fichier texte (pour la journalisation locale) ou pour appeler une fonction webservice sur un serveur distant. Vous avez un contrôle total sur ce qui est écrit où, et vous n'avez pas besoin d'un non-sens de tronçonneuse juste pour lire vos journaux.

+0

Ah les joies du développement mobile et les gens qui hack-porting libs de bureau aux FC. – ctacke

+0

Merci MusiGensis. Je pensais juste de cracher chaque événement dans un fichier xml dans un dossier avec un exe complètement séparé juste réveiller l'appareil de temps en temps et envoyer les fichiers à un webservice (pas de notifications de fichiers dans CE). Je suppose que je pourrais déclencher l'exe de mon code aussi. –

0

CE SQL (Compact Edition) prend en charge la réplication. Vous pouvez stocker les exceptions localement, puis synchroniser le magasin de données local avec un serveur central lorsqu'il est connecté. Certains détails here.

+0

J'éviterais cette approche. L'écriture dans une base de données SQL CE est plus susceptible d'échouer qu'écrire dans un fichier texte et (bien que MS ne le fasse pas) la réplication SQL CE n'est pas fiable lorsque la connexion réseau est interrompue pendant la réplication (ce qui arrive souvent avec les périphériques mobiles). – MusiGenesis

+0

Merci pour votre contribution Dave mais je suis d'accord avec MusiGenesis. Ce sont les problèmes de réplication de SQLCE et de SQLCE que je suis principalement intéressé par la journalisation :) –