iSven

Unwichtiges nach Relevanz sortieren...

Hands-On Lab für MSBuild

Mit .NET 2.0 hat Microsoft den Buildprocess von Visual Studio angepasst und sich mal wieder ein wenig an etablierten Methoden der Java Welt bedient (Ant).

Wem bisher allerdings kein gutes Tutorial in die Hände gekommen ist, so wie mir, sollte sich dies mal näher ansehen.

PatternLayout in log4net

Für das .NET Logging-Framework log4net habe ich immer wieder nach den Konfigurationseinstellungen der PatternLayouts, wie also die Ausgabe formatiert wird, gesucht. Damit die Suche endlich ein Ende hat:

Conversion Character Effect
a Used to output the frienly name of the AppDomain where the logging event was generated.
c

Used to output the logger of the logging event. The logger conversion specifier can be optionally followed by precision specifier, that is a decimal constant in brackets.

If a precision specifier is given, then only the corresponding number of right most components of the logger name will be printed. By default the logger name is printed in full.

For example, for the logger name "a.b.c" the pattern %c{2} will output "b.c".

C

Used to output the fully qualified class name of the caller issuing the logging request. This conversion specifier can be optionally followed by precision specifier, that is a decimal constant in brackets.

If a precision specifier is given, then only the corresponding number of right most components of the class name will be printed. By default the class name is output in fully qualified form.

For example, for the class name "log4net.Layout.PatternLayout", the pattern %C{1} will output "PatternLayout".

WARNING Generating the caller class information is slow. Thus, it's use should be avoided unless execution speed is not an issue.

d

Used to output the date of the logging event. The date conversion specifier may be followed by a date format specifier enclosed between braces. For example, %d{HH:mm:ss,fff} or %d{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is given then ISO8601 format is assumed (ISO8601DateFormatter).

The date format specifier admits the same syntax as the time pattern string of the ToString.

For better results it is recommended to use the log4net date formatters. These can be specified using one of the strings "ABSOLUTE", "DATE" and "ISO8601" for specifying AbsoluteTimeDateFormatter, and respectively ISO8601DateFormatter. For example, %d{ISO8601} or %d{ABSOLUTE}.

These dedicated date formatters perform significantly better than ToString.

F

Used to output the file name where the logging request was issued.

WARNING Generating caller location information is extremely slow. It's use should be avoided unless execution speed is not an issue.

l

Used to output location information of the caller which generated the logging event.

The location information depends on the CLI implementation but usually consists of the fully qualified name of the calling method followed by the callers source the file name and line number between parentheses.

The location information can be very useful. However, it's generation is extremely slow. It's use should be avoided unless execution speed is not an issue.

L

Used to output the line number from where the logging request was issued.

WARNING Generating caller location information is extremely slow. It's use should be avoided unless execution speed is not an issue.

m

Used to output the application supplied message associated with the logging event.

M

Used to output the method name where the logging request was issued.

WARNING Generating caller location information is extremely slow. It's use should be avoided unless execution speed is not an issue.

n

Outputs the platform dependent line separator character or characters.

This conversion character offers practically the same performance as using non-portable line separator strings such as "\n", or "\r\n". Thus, it is the preferred way of specifying a line separator.

p

Used to output the level of the logging event.

P

Used to output the an event specific property. The key to lookup must be specified within braces and directly following the pattern specifier, e.g. %X{user} would include the value from the property that is keyed by the string 'user'. Each property value that is to be included in the log must be specified separately. Properties are added to events by loggers or appenders. By default no properties are defined.

r

Used to output the number of milliseconds elapsed since the start of the application until the creation of the logging event.

t

Used to output the name of the thread that generated the logging event. Uses the thread number if no name is available.

u

Used to output the user name for the currently active user (Principal.Identity.Name).

WARNING Generating caller information is extremely slow. It's use should be avoided unless execution speed is not an issue.

W

Used to output the WindowsIdentity for the currently active user.

WARNING Generating caller WindowsIdentity information is extremely slow. It's use should be avoided unless execution speed is not an issue.

x

Used to output the NDC (nested diagnostic context) associated with the thread that generated the logging event.

X

Used to output the MDC (mapped diagnostic context) associated with the thread that generated the logging event. The key to lookup must be specified within braces and directly following the pattern specifier, e.g. %X{user} would include the value from the MDC that is keyed by the string 'user'. Each MDC value that is to be included in the log must be specified separately.

%

The sequence %% outputs a single percent sign.

Kontaktaufnahme - Oracle und SQL Server

Pünktlich zum Erscheinen des Microsoft SQL Server 2005 ist ein Sonderheft des Datenbanken Magazins erschienen: SQL Server Special, in dem ein Artikel von mir veröffentlicht wurde. Thema: Das Zusammenspiel zwischen SQL Server und Oracle. Mögliche interessante Kopplungen der beiden Datenbanken lassen sich wie folgt bewerkstelligen:

  • Linked Server und Replikation (SQL Server Technologien)
  • Generic Connectivity und das Transparent Gateway (Oracle Technologien)
  • .NET Stored Procedures (SQL Server als auch Oracle)

Neugierig auf mehr? Also ab zum Kiosk!

Eclipse Plugin SAP2Java

Für die Verknüpfung von Java Anwendungen mit SAP steht der Java Connector (JCo) von SAP zur Verfügung. Mittels diesem lassen sich Outbound (ABAP calls Java) als auch Inbound (Java calls ABAP) Aufrufe realisieren.

Beim Kodieren von Inbound calls stellt man ziemlich schnell fest, das erheblicher Aufwand zum Erstellen der Klassen zum Aufnehmen der von SAP gelieferten Strukturen und Tabellen anfällt. Im Gegensatz zum SAP.NET Connector existiert beim JCo leider kein Assistent, der diese Klassen (auch Tranfer Objekte genannt) auf Knopfdruck anhand des SAP Data Dictinaries erzeugt. Zum Glück existiert für Eclipse das kostenlose (weil Open Source) Plugin SAP2Java:

 

"This plugin provides a quick way to generate Java Objects from RFC enabled function modules in SAP R3 using SAP-JCO as the middleware. The plugin generates serializable Java Objects equivalent of SAP's Import , Export and Table parameter values."

Ganz angenehm ist, das für alle SAP Parameter - die manchmal sehr kurz und daher oft unleserlich sind - ein beschreibender Text als Kommentar in der generierte Java Klasse erzeugt wird. Dies erleichtert oft das Verständnis, was da eigentlich für Daten hin und her transportiert werden.

Hier ein Beispiel für solch einen Klartext:

private java.lang.String MERCHIDCL; //Payment cards: Merchant ID at the clearing house

Blank Page bei Response.Redirect in ASP.NET 1.1

Wenn der Befehl Response.Redirect in ASP.NET in Verbindung mit Smart Navigation, statt der gewünschten Seite nur eine leere Seite anzeigt, dann einfach mal kontrollieren, ob der Ordner aspnet_client im Rootverzeichnis der Webseite existiert. Falls nicht, aspnet_regiis.exe auf dem entsprechenden Webserver ausführen.

EMS DB Comparer for SQL Server

Auf der Suche nach einem Tool zum Abgleich von SQL Server 2000 Datenbanken bin ich auf den EMS DB Comparer for SQL Server gestossen. Dieses Tool kostet gerade mal 65,- ? und zeigt zuverlässig die Unterschiede von zwei SQL Server Datenbanken an. Zum schnellen Abgleich zwischen Test-, Entwicklungs- und Produktionssystemen ist es auf jeden Fall zu empfehlen.


Anmerkung: Wer leistungsfähigere Tools zur Verwaltung von SQL Server Datenbanken sucht, der sollte mal einen Blick auf die Produkte von Quest werfen. Die sind zwar nicht ganz billig, glänzen dafür aber mit einem umfangreichen Portfolio an Funktionen für Analyse, Entwicklung, Administration und Tuning.