Let's assume you can get all that information.
You have conflicting needs: you don't want to slow down the login process, but you also don't want to store full string descriptions for everything for the entire history
You could consider a two-level system: the initial logging captures everything with full strings. Then another process periodically pulls that data into a permanent history table, assigning identifiers in place of strings as required. Then the initial log data is deleted.
This allows you to have a minimal effect on logins but still save space and enhance analysis by assigning codes later.
SQL DBA,SQL Server MVP(07, 08, 09)[size=2]Prosecutor James Blackburn, in closing argument in the Fatal Vision murders trial: If in the future, you should cry a tear, cry one for them [the murder victims]. If in the future, you should say a prayer, say one for them. And if in the future, you should light a candle, light one for them.[/size]