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) 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.