• I have a blog post to show how I logged variable values to the default logging table [dbo].[sysssislog]. The log is created "when the variable value changes".
    http://www.sqlerudition.com/how-to-log-ssis-variable-values-during-execution-in-the-event-log/

    My example uses the OnVariableValueChanged event (and its scoped variable [System::VariableValue]) to run an Execute SQL Task that writes values to the table. Of course, the Execute SQL Task can be easily modified to log the variable values to your own custom table.

    If you want to log values "as soon as the package starts", then you'll need to write a Script Task or an Execute SQL Task in the Control Flow, or even the Pre-Execute event, of the package. Although the [System::VariableValue] will not be available to you because it is limited to the scope of OnVariableValueChanged event.