Any SQL backup is done when it writes the backup end time to the backupset table in the msdb database. When you search in there full backups are type D and log backups are type L. And there is a copy-only column to mark copy-only backups
I run the following query periodically against a group I created on our central management server and you can modify it for your needs.
select a.server_name as hostname, a.Database_Name,a.name,
a.backup_finish_date
--over (partition by database_name)
as Backup_End_Time
,Backup_Type =
case a.type
when 'D' then 'Full backup'
when 'I' then 'Differential Backup'
when 'L' then 'Transaction Log Backup'
when 'F' then 'filegroup Backup'
when 'G' then 'Differential File backup'
else 'See Books Online'
end, cast((a.backup_size/1048576)as bigint) as Size_of_Backup_MB ,
a.software_major_version, a.compatibility_level, a.has_backup_checksums,
a.is_copy_only
from msdb..backupset a
inner join sys.dm_hadr_availability_replica_cluster_states b on
a.server_name = b.replica_server_name
--inner join sys.dm_hadr_availability_replica_cluster_states e on
d.server_name = e.replica_server_name
inner join sys.dm_hadr_availability_replica_states c on c.replica_id =
b.replica_id
inner join sys.databases e on a.database_name = e.name
where exists
(select 1 from msdb..backupset d
where a.server_name = d.server_name
and a.database_name = d.database_name
and d.is_copy_only = 0
having a.backup_finish_date = max(d.backup_finish_date))
and a.Type = 'd'
--and a.name in ('CommVault Galaxy Backup')
--and a.has_backup_checksums = 0
--and c.role_desc = 'primary'
group by a.backup_finish_date, a.database_name, a.server_name, a.Type,
a.backup_size, a.compatibility_level, a.database_version,
a.software_major_version
, a.has_backup_checksums, a.is_copy_only, a.name, a.description
having max(a.backup_finish_date) < getdate() -2
order by a.server_name, a.database_name