Since trace has more information as to who,where,when I have created a job called 'DBA - Notify System Changes' with the code below, Also I am using Alert to detect system changes and trigger the job.
Job Code:
-- set servername in subject line
declare @sub nvarchar(255) = 'SQL Server Instance configuration has been changed ' + cast(@@servername as nvarchar)
-- pick one mail profile if there are multipal mail profiles
declare @pf nvarchar(255)
select top 1 @pf= sp.name from msdb..sysmail_profile sp
join msdb..sysmail_profileaccount spa on sp.profile_id=spa.profile_id
join msdb..sysmail_account sa on spa.account_id=sa.account_id
DECLARE @trc_path VARCHAR(500)
SELECT @trc_path=CONVERT(VARCHAR(500),value) FROM fn_trace_getinfo(DEFAULT)
WHERE property=2
--print @trc_path
declare @Qry varchar(8000) ='SELECT TEXTData,HostName,ApplicationName,DatabaseName,LoginName,SPID,StartTime,EventSequence FROM fn_trace_gettable('''
set @Qry=@Qry + @trc_path +''',1) fn WHERE TEXTData LIKE ''%Configuration option%'' and EventClass = 22'
--print @Qry
--exec(@Qry)
--declare @q=
EXEC msdb..sp_send_dbmail
@profile_name = @pf,
@recipients = 'sendIT2me@somewhere.com',
@subject = @sub ,
@body = 'System configuration has been changed ',
@execute_query_database = 'master',
@query = @Qry
--, @attach_query_result_as_file = 1
--, @query_attachment_filename = 'configuration.csv'
, @query_result_header = 0
, @query_result_width = 32767
, @query_result_separator = ','
, @query_result_no_padding =1
Alert Code :
USE [msdb]
GO
/****** Object: Alert [Alert - System Changes] Script Date: 2/9/2018 1:46:35 PM ******/
EXEC msdb.dbo.sp_add_alert @name=N'Alert - System Changes',
@message_id=0,
@severity=10,
@enabled=1,
@delay_between_responses=0,
@include_event_description_in=0,
@event_description_keyword=N'Configuration option',
@category_name=N'[Uncategorized]',
@job_name='DBA - Notify System Changes'
GO